在守护进程模式下运行时的GNU屏幕,如果收到SIGTERM会发生什么:

时间:2012-01-10 18:54:01

标签: unix process parent-child gnu-screen

我有一个以守护进程模式启动屏幕的脚本,后者又运行程序命令。

screen -L -c <SCREEN_CONFIG-FILE> -dmS <SCREEN-NAME> <program-COMMAND>

启动屏幕后脚本将退出。

当我执行ps时,我看到屏幕和程序都运行不同的pgid和sid。 程序的ppid是屏幕的pid。

现在如果SIGTERM被发送到屏幕进程,程序会发生什么:它会得到SIGTERM:根据我的经验,屏幕和程序都被杀死了,但是程序没有得到SIGTERM信号,它因某些原因而死亡我想其他信号。

此外,如果SIGTERM直接发送到程序进程或程序退出自身会发生什么情况,屏幕进程也会死掉:

1 个答案:

答案 0 :(得分:2)

如果您将SIGTERM发送到屏幕守护程序,它将终止并且所有子进程也将终止。如果您发送SIGTERM命令的进程,它可能取决于命令。通常它也应该终止,如果你可以编辑某些脚本,你可以捕获SIGTERM并防止它被终止。

让我们说你做了这样的事情:

screen -dmS test-screen bash -c top (screen PID 2001 / top PID 3001)

你说

kill 2001

屏幕守护程序将终止,随之而来的bash托管顶部和顶部也将终止。

kill 3001

将终止顶部,bash将终止,屏幕守护程序将结束。