我有几个 Linux 机器,每个机器都运行着一个服务。这是这些机器上运行的唯一重要进程。但是,有时由于服务中的一些内部状态变化,它会正常停止。我正在寻找一种在发生这种情况时关闭整个系统的惯用方法。基本上,我希望 systemd 在myservice
服务不再运行时停止系统。
是否有捷径可寻?
我目前所做的是开发另一项服务myservice-monitor
,用于监控myservice
,当其停止时,myservice-monitor
关闭系统。一切正常,但我认为一定有一种方法可以以更惯用的方式解决这个问题...
答案1
你可以使用 来执行此操作systemd
,尽管我不知道这样做是否可取。如果服务在升级过程中崩溃或需要重新启动,机器也会在这些情况下关闭!
您可以将其添加到systemd
您的服务的单元文件中:
ExecStopPost=/sbin/halt
请man systemd.service
参阅有关的完整文档和免责声明ExecStopPost
。