在机器关闭/重启之前等待*用户*服务正常退出

在机器关闭/重启之前等待*用户*服务正常退出

我一直在使用 管理所有用户级进程systemctl --user,它提供了很多好处,包括发生错误时自动重启的能力、进程依赖性等等。

但是,我遇到的一个问题是,重启/关机不会等待用户服务结束。我看到了很多有关系统服务的信息,但没有关于用户服务的信息。

以下是我发现的一些有趣的信息:

经过进一步调查,我发现服务确实会收到终止信号。问题是 systemd 不会等待它们正常完成。令人惊讶的是,并非所有用户服务都会终止,尽管linger我的用户已禁用这些服务。我可以通过注销图形会话、以 root 身份登录 TTY 并ps查看哪些进程仍在运行来测试这一点。

答案1

显然,在 中运行的进程user.slice在发出关机命令后大约 90 秒内会被(无情地)杀死,这与在 中运行的进程相反system.slice

我假设由 启动的进程systemctl --user最终以 结束user.slice

我遇到了类似的问题,是由用于启动我的服务的启动脚本中的用户开关( su/ )引起的( )。sudoExecStart=/path/to/my/startscript

在启动脚本中删除su/并将其添加到单元文件的部分后,我的服务进程启动并在关机时得到正确处理。sudoUser=myuser[Service]system.slice

相关内容