我让 Jenkins 在 CentOS7 上运行,它有时会崩溃,我想在发生这种情况时自动重新启动它。谷歌了一下我发现在 Systemd 上你可以使用 Restart=on-failure 但问题是从我看到的詹金斯不使用服务文件。
如果我做 systemctl status jenkins.service 我得到:
● jenkins.service - LSB: Jenkins Continuous Integration Server
Loaded: loaded (/etc/rc.d/init.d/jenkins)
Active: active (running) since Mon 2016-02-29 17:30:08 UTC; 11min ago
所以看起来它仍在使用init.d?Restart=on-failure
知道在这种情况下如何使用它吗?
作为一个完全可怕的 kluge,您可以指向
systemd
jenkins init 脚本,因为该脚本有一大堆烦人的“Java 在哪里”和其他代码来弄清楚如何让 jenkins 启动和运行。然后该服务在重新启动时启动,未被 列出
chkconfig --list
,并且即使您kill -9 $thepid
在理想情况下长期重新启动,对于詹金斯人来说,更好的选择是在他们的 RPM 中包含对 systemd 的直接支持......我可以提供 systemd-file,它是对Jenkins Wiki代码的修改:
这比通过 apt 安装 Jenkins 的 Ubuntu 16.04 上的 @thrig 效果要好得多。这样你就不再需要 /etc/init.d/jenkins 和 /etc/default/jenkins 并且直接在 journalctl 中获取日志。
Jenkins 软件包仍然只附带一个 SysV 初始化文件,因此 systemd 特定行为不可用。我提出了一个错误报告,要求在包中提供一个 systemd 单元文件。https://issues.jenkins-ci.org/browse/JENKINS-41218