标签:sheng desktop 控制台 发送 无法 sighup 控制 python 其他
nohup的意思是不间断的运行,&的意思是后台运行,2>&1的意思是标准输出和错误输出都重定向到同一个文件。
简单地说nohup运行时即使关掉控制台,它该运行还是运行。
https://blog.csdn.net/liuyanfeier/article/details/62422742讲解的比较透彻,我给他做一点补充
可以参考https://www.jianshu.com/p/747e0d5021a2
先假设一个情况,想要后台运行一个命令怎么办?最好的办法是用&
,在命令的结尾加一个&
就可以在后台运行了。
&
实例解析假设有一个python程序叫做123.py
代码是这个样子,一直去输出一些东西。
import time
a = 1
while True:
print("start to print sth")
a+=1
print("a=%s" %(a))
time.sleep(2)
如果运行它的话需要python3 123.py
,可以把正确的内容重定向到log.txt。这个时候命令就是
python3 123.py > log.txt
su@DESKTOP-FA1P4IO:~$ python3 123.py >> log.txt
&
后就可以进行操作别的东西了。suyuesheng@DESKTOP-FA1P4IO:~$ python3 123.py >> log.txt &
[2] 809
suyuesheng@DESKTOP-FA1P4IO:~$
但是关闭控制台后,即使python3 123.py >> log.txt &
后面有&
依然会被终止进程。
因为关闭终端后会收到挂断信号。nohup就不会收到挂断信号。
nohup正如名字所声称的,忽略所有发送给子命令的挂断(SIGHUP)信号。
这样所有发给命令的SIGHUP信号都被忽略,命令就不会收到SIGHUP信号。
什么是SIGHUP信号呢?
简单的理解可以是终端结束时,操作系统会发送SIGHUP信号到后台进程。
su@DESKTOP-FA1P4IO:~$ nohup python3 123.py >> log.txt &
[3] 905
标签:sheng desktop 控制台 发送 无法 sighup 控制 python 其他
原文地址:https://www.cnblogs.com/sogeisetsu/p/11403326.html