![如何向 systemd 服务发送待关闭消息](https://linux22.com/image/771382/%E5%A6%82%E4%BD%95%E5%90%91%20systemd%20%E6%9C%8D%E5%8A%A1%E5%8F%91%E9%80%81%E5%BE%85%E5%85%B3%E9%97%AD%E6%B6%88%E6%81%AF.png)
我使用的是启用了自动更新程序的 Fedora CoreOS,这非常适合我的用例。目前,当以交互方式登录时,系统会通过控制台警告即将关机/重启,其机制与答案中描述的相同,例如 从服务器向所有客户端发送关闭消息
但是,该服务器的“实际”用户不是具有 SSH 访问权限的 Linux 用户,而是访问 IRC 或其他服务等服务器的用户。我想“捕获”关闭警告消息并将其转发给每个服务,以便它们可以广播它。
podman-generate-systemd
这些服务使用通过 systemd( )用户单元运行的非特权 podman/docker 容器进行编排。
我可以(滥用)使用ExecStopPre
systemd 单元中的设置来总是 sleep 5m
在关闭设备之前。但这并不是我想要的,因为我希望能够立即重新启动/停止服务,方法是使用 手动完成systemctl --user stop/restart
。
我目前看到两种可以实现此目的的方法:
- 为单位提供某种方式来收听墙上的信息并转发它们
--ignore ExecStopPre
在控制台上指定的某种方式。
后者虽然不符合人体工程学,但可以使用 来实现systemctl --user edit --runtime
。然而,第二种方法有(滥用)使用 ExecStopPre 的停机时间,而它可能已经用于其他目的。
尽管如此,我还是很乐意听到关于如何实现 (1) 或使 (2) 更易于操作的想法。或者甚至完全不同的解决问题的方法。