我在想我的run.py
脚本是否可以以两种不同的模式运行。
在nohup模式下:nohup python run.py &
,就像完全日志输出模式一样。但在正常模式下python run.py
,就像日志抑制模式一样。因此对于用户来说它将是整洁和清晰的。
所以。我的问题:我的runnable python脚本如何知道自己在nohup模式或普通模式下运行?
答案 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
和正常调用,这将告诉您需要知道的所有信息。