我创build了一个systemd服务,它应该在启动或重启时调用一个shell脚本。
[Unit] Description=Starts the DCCA index software [Install] WantedBy=multi-user.target [Service] ExecStart=/opt/insiteone/bin/indexControl start ExecStop=/opt/insiteone/bin/indexControl stop # Execute pre and post scripts as root #PermissionsStartOnly=true Restart=on-abort TimeoutSec=600
一开始,它就一直在无限循环中重新启动,但是当我添加TimeoutSec选项时,只要第一次启动服务(启动,然后立即再次停止),就会调用ExecStop 。
任何线索,我哪里错了? PS:indexControl是一个shell脚本,启动其他进程。
从PHP如何system()函数工作?
Windows-C代码使程序在启动时运行
Windows 32位和64位之间的代码差异
实现基本的文件系统
有没有比在system()中用C ++提取命令更好的方法?
如果Linux中单个目录下的文件太多,会发生什么情况?
系统启动后立即启动SIGTERM
C上的系统编程
如何以毫秒分辨率获得Windows系统时间?
如何获取文件的第一个字节在磁盘上的位置?
尝试将Restart=on-abort更改为Restart=on-abnormal
从http://www.freedesktop.org/software/systemd/man/systemd.service.html :
将此设置为on-failure是长时间运行的服务的推荐选择,以通过尝试从错误中自动恢复来提高可靠性。 对于能够自行选择终止的服务(并避免立即重新启动) ,on-abnormal是另一种选择。
另外,您可能需要将Type=oneshot添加到[Service]部分。
从https://wiki.archlinux.org/index.php/Systemd#Service_types :
Type = oneshot:这对执行单个作业然后退出的脚本很有用。 您可能还需要设置RemainAfterExit = yes,以便systemd在退出进程后仍然认为该服务处于活动状态。
您可以粘贴我建议的更改如下:
[Unit] Description=Starts the DCCA index software [Install] WantedBy=multi-user.target [Service] Type=oneshot ExecStart=/opt/insiteone/bin/indexControl start ExecStop=/opt/insiteone/bin/indexControl stop Restart=on-abnormal
还有什么其他要考虑的是你是否甚至需要Restart=行…此服务文件调用的脚本是否经常失败?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。