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

时间:2017-03-08 07:57:43

标签: python linux command-line args nohup

我在想我的run.py脚本是否可以以两种不同的模式运行。 在nohup模式下:nohup python run.py &,就像完全日志输出模式一样。但在正常模式下python run.py,就像日志抑制模式一样。因此对于用户来说它将是整洁和清晰的。

所以。我的问题:我的runnable python脚本如何知道自己在nohup模式或普通模式下运行?

1 个答案:

答案 0 :(得分:3)

nohup命令修改它启动的进程的OS级信号处理。这不会反映在命令的参数中,但是进程可以查询自身以检查安装了哪些操作或信号处理程序。以下是如何做到这一点:

import signal

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

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