“ 整两个用的可能不是很多,但是确实又非常有用的命令。”
上一篇文章讲解了关于通配符,链接以及Grep相关操作,非常重要,
通配符 链接 grep
onlybugs,公众号:轻松玩转生信Linux系列9 | 通配符,链接和grep
这篇文章讲的两个命令说有用用途也很大,说没用其实有的时候也还真没啥用。touch我至今是没特定的使用它,所以我也不好多说有什么特别大的作用,可能你黑进别人的服务器里,拿了权限后可以写个shell轮流摸一摸,给人家留个惊喜吧(笑).
至于nohup的作用就比较大了,应用场景也比较广泛,大家经常会使用nohup cmd &这样的命令,或者其中加入了 2&>1这种东西,前面的今天会进行讲解,后面的简单的提一下,大后期会详细讲解标准输出 标准输出以及标准误差的问题。
touch命令
能够最让我想到使用touch的时候,就是我想创建一个空文件的时候。touch的命令描述是这样的
touch:用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。
简单来说就是touch嘛,你摸一摸它,把表面的灰摸下去,那不就新了嘛!所以touch会更新时间。此外呢,如果本来没有这个东西,但是你想摸,聪明的linux系统就会给你创建一个,所以touch的另一个功能就是创建一个新的空文件。
首先演示新文件的创建功能,
touch 1.t 2.t 3.t 4.t
你可以一下创建一个,也可以一下创建多个,而且这些文件都是空文件,
下面就是touch命令的第二个主要功能了,它可以给你的文件更新修改日期,我们来尝试更新日期,为了对比,我们就更新1.t的日期吧
ll
touch 1.t
ll
上面就是关于touch的更新日期功能了,我们可以看到八点四十九的日期变成了最新的八点五十三分。这就是我们的touch命令。
nohup命令
nohup命令某种意义上来说,对于某些方向的人简直就是梦想中的命令。比如,你想要run一个深度学习的模型,或者run一个又臭又长的流程代码,数据也大的要死,那你就需要很久很久很久的时间。
这个时候就会出现这样的一个问题,当你在run的时候,你期望它在后台进行处理,就算你登出了服务器,它还可以继续run。你可以一边操作着其它事情,然后等待它的run结果,并且把运行过程中的输出都放进一个文件中,这就是我们的nohup能做到的事情了。
nohup:进程不挂起,用于在系统后台不挂断地运行命令
大家直白一点理解,就是只要不是程序自己出了错误中止运行,系统就不给我们杀死程序,等着它自己运行结束。这对于需要跑大数据的苦比们是天大的福利啊,大家一定要加以利用。
我这里搞了个简单小程序,py写的
import time
print("begin")
time.sleep(5)
print("after 5 s")
time.sleep(5)
print("after after 5 s")
time.sleep(10)
print("lve bye bye ~")
接下来,我们使用nohup来运行它,并且把输出结果保存在p.log中
nohup python test.py > p.log &
这里会返回我们的进程号,我们可以使用这个号码杀死进程。
某次回车后,如果它运行结束了就会告诉你Done
这个时候你就可以去看看我们的日志文件了,需要的内容都在里面
这就是nohup命令的最基本的使用方法了。
大家可能也注意到了,nohup命令使用的最后一个位置,我们用了一个&符号,这里的&符号是让命令在后台执行,终端退出后命令仍旧执行。所以,重定向日志文件可以不写,但是&符号一定不要忘记加。
大多数时候,我们见到的nohup命令还有一句奇怪的参数
nohup python test.py > p1.log 2>&1 &
这里的2>&1其实也是一种重定向的操作,它表示的就是我们把标准错误重定向到标准输出里,但是标准输出其实被我们重定向到了日志文件了。关于重定向的知识,不懂的话回看前面的,
管道和重定向
onlybugs,公众号:轻松玩转生信Linux系列8 | 管道和重定向
如果我们使用了nohup,如何查看我们的任务是不是还在运行呢?如果你没登出,你可以使用jobs命令
就会给你返回你都run了什么,其实很多人平时都是不登出的,所以这个操作比较好用了。
但是如果你登出回来他就没了,咋办呢?别着急,给你这一条命令
ps aux | grep test.py
使用进程查看配合grep就可以了
grep详解
onlybugs,公众号:轻松玩转生信sed/awk系列2 | 一文掌握神奇的grep
今天的分享就到这里了,下一次的分享基础教程的最后一部分了,其实Linux大多数人的使用也就到此为止了,跑跑流程,调整路径,创建目录和文件等等。但是我们还差一个比较重要的功能,那就是搜索功能,我们目前还不会在文件系统中查找文件,这就是我们下一讲内容,find基础和locate命令。