当我关闭我的 Linux 桌面时(在他们调用 setsid() 之后)谁终止了我的进程?

问题描述 投票:0回答:0

在最近的 Linux 桌面上(在我的例子中:带有 X11 和 Plasma 的 Debian 11),想象一下我启动了一个进程,该进程通过 fork()ing 然后调用 setsid().

变成了后台进程

(在我的特殊情况下,如果我理解正确的话,在 Python 中执行 subprocess.Popen(["sleep", "999999"], start_new_session=True) 之类的所有内容)

我可以看到我的进程在注销后仍然存在。没关系。但是当我关闭或重新启动我的机器时,它会在某个时候终止,对吗?我假设它会从某个地方收到 SIGTERM,如果还活着的话,会稍后收到 SIGKILLSIGHUP 也不会让我感到惊讶。对吗?

但是系统的哪一部分确切地做到了这一点?有哪些方式?什么时候发生(即我可以假设系统的哪些部分当时仍在运行)?该进程在被杀死之前有多少时间?到底是谁做的(systemd?显示管理器?其他什么?)?

我试图在我的 Python 代码中处理 SIGTERM,并在那里进行一些清理。它似乎部分工作,但被打断了。整个关机过程只需几秒钟,所以不会卡住。我试图在 journalctl -xb -1 中找到一些东西,但是它很大,我找不到任何有趣的痕迹。

linux operating-system systemd shutdown
© www.soinside.com 2019 - 2024. All rights reserved.