![有没有办法让 systemd 服务在停止时关闭系统?](https://linux22.com/image/1519246/%E6%9C%89%E6%B2%A1%E6%9C%89%E5%8A%9E%E6%B3%95%E8%AE%A9%20systemd%20%E6%9C%8D%E5%8A%A1%E5%9C%A8%E5%81%9C%E6%AD%A2%E6%97%B6%E5%85%B3%E9%97%AD%E7%B3%BB%E7%BB%9F%EF%BC%9F.png)
我有几个 Linux 机器,每个机器都运行着一个服务。这是这些机器上运行的唯一重要进程。但是,有时由于服务中的一些内部状态变化,它会正常停止。我正在寻找一种在发生这种情况时关闭整个系统的惯用方法。基本上,我希望 systemd 在myservice
服务不再运行时停止系统。
是否有捷径可寻?
我目前所做的是开发另一项服务myservice-monitor
,用于监控myservice
,当其停止时,myservice-monitor
关闭系统。一切正常,但我认为一定有一种方法可以以更惯用的方式解决这个问题...
答案1
你可以使用 来执行此操作systemd
,尽管我不知道这样做是否可取。如果服务在升级过程中崩溃或需要重新启动,机器也会在这些情况下关闭!
您可以将其添加到systemd
您的服务的单元文件中:
ExecStopPost=/sbin/halt
请man systemd.service
参阅有关的完整文档和免责声明ExecStopPost
。