在 Ubuntu 18 上我有一项服务:
[Unit]
Description=Gets CSV
OnFailure=pushovercsv.service
[Service]
ExecStart=/usr/bin/vehicles.sh
[Install]
WantedBy=multi-user.target
这有效。我试图设置另一项服务,如果第一项服务停止或处于失败状态,它会提醒我:
pushovercsv.服务
[Unit]
Description=PushOver Notifaction for vehicles CSV Service
[Service]
Type=simple
ExecStart=curl -s --form-string "token=<secret>" --form-string "user=<secret>" --form-string "message=CSV service" https://<pushover api endpoint>
[Install]
WantedBy=multi-user.target
这两项服务均独立运作。
但它似乎没有OnFailure=pushovercsv.service
调用 pushover 服务。如果我用 停止第一个服务,systemctl stop service1
则不会收到来自 pushovercsv.service 的警报。
pushovercsv.service是否需要手动启动,还是在调用时启动?
答案1
顾名思义,OnFailure=
仅当单元发生故障(以非零退出代码退出、被信号杀死或类似情况)时才会触发。如果您想在服务停止时运行命令,您甚至不需要单独的服务,只需ExecStopPost=
足够。