小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
在工作中,我们可能经常要在服务器上跑程序,有可能要跑的程序耗时很长,需要运行一段时间,我们希望即使关闭终端,程序不受影响,继续运行。在Linux中的nohup
命令可以达到这种效果。
nohup
是英语 no hangup 的缩写,是不挂断的意思,也就是指程序不退出,用在系统后台不挂断地运行命令,退出终端不会影响程序的运行。
接下来将详细介绍一下nohup
命令的具体用法。
命令语法
nohup 命令 参数
nohup 选项
选项说明:
--help # 显示此帮助信息并退出
--version # 显示版本信息并退出
示例
下面是一个test.py
程序,程序每隔2秒会输出"hello nohup!":
import time
while True:
print("hello nohup!")
time.sleep(2)
然后使用nohup python3 test.py
运行。
注意:使用nohup命令时,程序的输出会默认重定向到一个nohup.out文件下。如果我们想要输出到指定文件,可另外指定输出文件:
nohup python3 test.py > out.txt
其实到现在,还没有真正的做到程序在后台运行,终端关闭不受影响!
如果想让程序真正的在后台运行,可以加上&
符号。
nohup python3 test.py > out.txt &
关闭终端,重新打开,使用ps
命令查一下进程,就会发现程序还在运行。
psh@deepin-pc:~/Desktop/test$ ps -aux | grep python
psh 36313 0.0 0.2 17768 8120 ? S 16:25 0:00 python3 test.py
这里如果想要把标准错误和标准输出都重定向到指定的out.txt文件中,可以使用2>&1
符号,2>&1
符号的意思是将将标准错误 2 重定向到标准输出 &1。
- 0 stdin (standard input,标准输入)
- 1 stdout (standard output,标准输出)
- 2 stderr (standard error,标准错误输出)
nohup python3 test.py > out.txt 2>&1 &
nohup
命令结合&
符号可以使进程在后台运行,即使关闭了终端依然不受影响。
这时,如果想要终止这个进程,要怎么操作呢? 这个可以查看之前分享的文章:Linux下kill掉一个进程的几种方式。
原创不易,如果小伙伴们觉得有帮助,麻烦点个赞再走呗~
最后,感谢女朋友在工作和生活中的包容、理解与支持 !