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

How does the python script know itself running in nohup mode?

我在想我的 run.py 脚本是否可以在两种不同的模式下运行。 在 nohup 模式下:nohup python run.py &,在正常模式 python run.py 下,表现得像完整日志输出 mode.but,表现得像日志抑制模式。这样对用户来说会很整洁。

So.My 问题:在 nohup 模式或正常模式下,我的可运行 python 脚本如何知道自己 运行?

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 和正常调用,这将告诉您所有需要的知道。