Man*_*ian 11 nohup background-process
我尝试通过远程会话启动一个 shell 脚本,它使用命令在后台启动一个进程。
nohup python3 run.py > nohup.out &
Run Code Online (Sandbox Code Playgroud)
当远程会话关闭时,进程会被以下消息杀死:
捕获信号SIGHUP
SIGHUP 被捕获但没有被守护。退出。
我不明白;为什么进程在使用nohup &在后台启动时被杀死?
Jde*_*eBP 12
nohup
.nohup
忽略挂断信号,SIG_IGN
然后在同一进程中链式加载您的程序。
您的 Python 程序会立即重置挂断信号的信号处理,安装自己的信号处理程序。该处理程序检查一个内部函数(设计得不是很好,基于一些有缺陷的假设,如果它是我见过的那个),并决定在收到挂断信号时的适当操作过程是打印该消息并退出。
您的 Python 程序设计为不可nohup
。在具有作业控制外壳和 POSIX 会话/作业语义的系统上,您需要disown
ing 作业,以便外壳永远不会知道它首先要向它发送挂断信号。
(即使这在 systemd 操作系统上也是不够的。因为 systemd 的人对他们的用户空间登录会话机制有点了解,你还需要确保 systemd 的机制是发出系统关闭而不是挂断信号的机制每次注销时的登录会话也没有启动。)
归档时间: |
|
查看次数: |
7156 次 |
最近记录: |