python脚本如何知道自己以nohup模式运行?

我在想我的run.py脚本是否可以在两种不同模式下运行.
当处于nohup模式时:nohup python run.py& ,就像完整的日志输出模式.但是在正常模式下python run.py,就像日志抑制模式.因此,对于用户而言,这将是整洁清晰的.

所以,我的问题:我的可运行python脚本本身如何在nohup模式或正常模式下运行?

解决方法:

nohup命令针对启动的进程修改操作系统级别的信号处理.这没有反映在命令的参数中,但是进程可以查询自身以检查安装了哪些操作或信号处理程序.方法如下:

import signal

if signal.getsignal(signal.SIGHUP) == signal.SIG_DFL:  # default action
    print("No SIGHUP handler")
else:
    print("In nohup mode")

这将适用于任何Unix系统,并且可能适用于Windows(未经测试).还有其他方法可以从外壳程序或从程序内部设置信号处理程序,但是如果您只是试图区分nohup和常规调用,这将告诉您所有您需要了解的信息.

上一篇:Linux下在后台运行命令


下一篇:长时间运行的Openshift Cron