Centos – How to use automatic Restart with Jenkins on Systemd

centoscentos7Jenkinssystemd

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?

Best Answer

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...