大佬教程收集整理的这篇文章主要介绍了linux – Systemd – 在ExecStopPost中检测服务是否退出而没有错误,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个应用程序,它完成后正常退出不应该重新启动.在此应用程序完成其业务之后,我想关闭实例(ec2).我正在考虑使用带有选项的systemd单元文件来执行此操作
@H_419_5@Restart=on-failure
ExecStopPost=/path/to/script.sh
应该在ExecStopPost上运行的脚本:
@H_419_5@#!/usr/bin/env bash
# sleep 1; adding sleep didn't Help
# this always comes out deactivaTing
service_status=$(systemctl is-Failed app-importer)
# Could also do the other way round and check for Failed
if [ $service_status = "inactive" ]
then
echo "service exited normally: $service_status . ShutTing down..."
#shutdown -t 5
else
echo "service did not exit normally - $service_status"
fi
exit 0
问题是,当后停止运行时,我似乎无法检测服务是否正常结束,状态然后是停用,只有在我知道它是否进入失败状态之后.
你应该做的是检查脚本中的$serviCE_RESULT,$EXIT_CODE和/或$EXIT_STATUS,它将告诉你服务是如何停止的.例:
@H_419_5@#!/bin/sh
echo running exec post script | logger
systemctl is-Failed foobar.service | logger
echo $serviCE_RESULT,$EXIT_CODE and $EXIT_STATUS | logger
当服务允许运行完成时:
@H_419_5@Sep 17 05:58:14 systemd[1]: Started foobar.
Sep 17 05:58:17 root[1663]: foobar service will Now exit
Sep 17 05:58:17 root[1669]: running exec post script
Sep 17 05:58:17 root[1671]: deactivaTing
Sep 17 05:58:17 root[1673]: success,exited and 0
当服务在完成之前停止时:
@H_419_5@Sep 17 05:57:22 systemd[1]: Started foobar.
Sep 17 05:57:24 systemd[1]: Stopping foobar...
Sep 17 05:57:24 root[1643]: running exec post script
Sep 17 05:57:24 root[1645]: deactivaTing
Sep 17 05:57:24 root[1647]: success,killed and TERM
Sep 17 05:57:24 systemd[1]: Stopped foobar.
以上是大佬教程为你收集整理的linux – Systemd – 在ExecStopPost中检测服务是否退出而没有错误全部内容,希望文章能够帮你解决linux – Systemd – 在ExecStopPost中检测服务是否退出而没有错误所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。