Scenario / Questions
I have Jenkins running on a CentOS7 and it kind of crashes from time to time and I’d like to restart it automatically when this happens. Googleing a bit I’ve found that on Systemd you can use Restart=on-failure but the problem is that from what I see Jenkins does not use a service file.
If I do systemctl status jenkins.service I get:
● 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
So looks like it’s still using init.d? Any idea how I can use this
Restart=on-failure in this case?
Find below all possible solutions or suggestions for the above questions..
As a total horrible kluge you could point
systemd at the jenkins init script, as that script has a whole bunch of annoying “where’s Java” and other code to figure out how to get jenkins up and running.
# cat /etc/systemd/system/jenkins.service [Unit] Description=Jenkins Server Daemon Wants=network-online.target After=network-online.target [Service] ExecStart=/etc/init.d/jenkins start Restart=always RestartSec=3 Type=forking [Install] WantedBy=multi-user.target # systemctl enable jenkins.service
and then the service starts at reboot, is not listed by
chkconfig --list, and restarts even if you
kill -9 $thepid though ideally long-term a better option would be for the jenkins folk to include direct support for systemd in their RPM…
I can offer systemd-file which is a modification of the code from the Jenkins Wiki:
[Unit] Description=Jenkins Daemon [Service] SuccessExitStatus=143 ExecStart=/usr/bin/java -jar /usr/share/jenkins/jenkins.war --webroot=/var/cache/jenkins/war --httpPort=8081 --ajp13Port=-1 Environment="JENKINS_HOME=/data/jenkins" User=jenkins [Install] WantedBy=multi-user.target
That works much better than the one from @thrig on Ubuntu 16.04 with Jenkins installed via apt. This way you don’t need /etc/init.d/jenkins and /etc/default/jenkins anymore and also get the logs directly in journalctl.
Jenkins packages are still shipping with only a SysV init file, so systemd specific behaviours are not available.
I raise a bug report to request that a systemd unit file is shipped in the packages. https://issues.jenkins-ci.org/browse/JENKINS-41218
Disclaimer: This has been sourced from a third party syndicated feed through internet. We are not responsibility or liability for its dependability, trustworthiness, reliability and data of the text. We reserves the sole right to alter, delete or remove (without notice) the content in its absolute discretion for any reason whatsoever.