当我登录我的用户帐户时,我有一些使用 systemd 启动的服务,例如我做了:
systemctl --user enable foo.service
但我通常会突然终止我的 X 会话,即只需按电源按钮即可直接启动 systemd 关闭(我有一个最小的桌面环境)。 Systemd 终止 X,将所有子进程发送到坟墓。
--user
在这种情况下,systemd 会正常关闭foo 服务吗?
答案1
systemd --user
作为名为 的系统服务运行[email protected]
。这是一个模板服务。您的实例可能是[email protected]
.该数字是您的用户 ID ( id -u
)。
系统关闭程序将[email protected]
用通常的信号发出停止信号SIGTERM
。作为响应,该systemd --user
进程将通知每个用户服务停止。[*]
systemctl cat [email protected]
建议将用户服务超时(宽限期)设置为超过 120 秒没有什么意义。此后,所有用户服务都将从SIGKILL
主系统(PID 1)接收。 SIGKILL
立即致命。
要了解此文件中的设置,请参阅man systemd.kill
和man systemd.service
。
[*] 从技术上讲,systemd --user
响应的作用SIGTERM
是激活用户单元exit.target
。这在 中提到过man systemd
。有关 的更多信息exit.target
:systemctl cat exit.target
将告诉您查看man systemd.special
:-)。