nohup python /data/python/server.py > python.log3 2>&1 &<br>说明:<br>1、1是标准输出(STDOUT)的文件描述符,2是标准错误(STDERR)的文件描述符<br> 1> python.log 简化为 > python.log,表示把标准输出重定向到python.log这个文件<br>2、2>&1 表示把标准错误重定向到标准输出,这里&1表示标准输出<br> 为什么需要将标准错误重定向到标准输出的原因,是因为标准错误没有缓冲区,而STDOUT有。<br> 这就会导致 commond > python.log 2> python.log 文件python.log被两次打开,而STDOUT和 STDERR将会竞争覆盖,这肯定不是我门想要的<br>3、好了,我们现在可以直接关闭shell窗口(我用的是SecureCRT,用的比较多的还有Xshell),而不用再输入exit这个命令来退出shell了<br><br>$ ps aux|grep python<br>tomener 1885 0.1 0.4 13120 4528 pts/0 S 15:48 0:00 python /data/python/server.py<br>tomener 1887 0.0 0.0 5980 752 pts/0 S+ 15:48 0:00 grep python
python的输出有缓冲,导致python.log3并不能够马上看到输出。
使用-u参数,使得python不启用缓冲。
所以改正命令,就可以正常使用了
$ nohup python -u test.py > out.log 2>&1 &
本文介绍了使用nohup命令后台运行python脚本,并将标准输出和错误重定向到同一文件的过程。重点解释了为何需要将标准错误重定向到标准输出,以避免文件被重复写入的问题。同时提到了python输出的缓冲问题,以及如何通过添加-u参数禁用缓冲。最后,展示了检查python进程的方法和修正后的命令。
3048

被折叠的 条评论
为什么被折叠?



