linux – Systemd – 在ExecStopPost中检测服务是否退出而没
发布时间:2021-01-14 16:25:50 所属栏目:Linux 来源:网络整理
导读:我有一个应用程序,它完成后正常退出不应该重新启动.在此应用程序完成其业务之后,我想关闭实例(ec2).我正在考虑使用带有选项的systemd单元文件来执行此操作 Restart=on-failureExecStopPost=/path/to/script.sh 应该在ExecStopPost上运行的脚本: #!/usr/bin/
我有一个应用程序,它完成后正常退出不应该重新启动.在此应用程序完成其业务之后,我想关闭实例(ec2).我正在考虑使用带有选项的systemd单元文件来执行此操作
应该在ExecStopPost上运行的脚本:
问题是,当后停止运行时,我似乎无法检测服务是否正常结束,状态然后是停用,只有在我知道它是否进入失败状态之后. 最佳答案 您的问题是systemd在ExecPostStop进程完成之前认为该服务已停用.睡觉并没有帮助,因为它只会等待更长时间. ExecPostStop的想法是清理服务可能留下的任何内容,如临时文件,UNIX套接字等.服务未完成,并准备重新启动,直到清理完成.因此,如果你以这种方式看待它,那么systemd正在做什么是有意义的. 你应该做的是检查脚本中的$SERVICE_RESULT,$EXIT_CODE和/或$EXIT_STATUS,它将告诉你服务是如何停止的.例:
当服务允许运行完成时:
当服务在完成之前停止时:
(编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |