nohup 命令描述:nohup 命令运行由 Command参数和任何相关的 Arg参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 & ( 表示“and”的符号)到命令的尾部。(百度百科)nohup 解释:
nohup的作用是讲一个程序由前台运行转入后台运行。例:
python a.py
#a.py
while True:
print "hello"
python a.py
Shell 终端执行 : Python时 会一直提示 hello并且阻塞当前shell进程,很烦,你想让它输出,但又不想看到它。怎么办? 加nohup命令
nohup python a.py >> a.py.log 2>&1 &
上述命令会将a.py的输出保存在a.py.log文件中 >>是追加输入
2>&1是将标准错误(2)重定向到标准输出(&1),标准输出(&1)再被重定向追加输入到a.py.log 文件中
这里有一点要注意:
加入nohup 之前要确保程序是可以正常运行的。
我们假设 a.py的代码如下
#a.py
while Tr
print "hello"
很显然 python a.py 命令是会报错的。但nohup python a.py >> a.py.log 2>&1 & 是不会报错的
那么你要怎么知道是否有出错?
解决方法:执行完该命令后:nohup python a.py >> a.py.log 2>&1 &
多敲几次回车键 如果a.py有问题 就会出现exit 的提示 ,如果没有则正常
用了 nohup 后台模式,要关掉进程怎么办?
解决方法:
1. 查看Python的进程 :ps -aux | grep python
2.找到进程号 1145
root 1145 0.0 0.1 128024 4536 pts/0 S 03:40 0:00 python a.py
root 2681 3.0 0.0 103240 840 pts/0 D+ 03:57 0:00 grep python
3. kill -9 1145 杀死它就OK了