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