Linux 后台输入命令及后台运行程序 nohup 命令 小结

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了

你可能感兴趣的:(Python)