Você provavelmente está executando o systemd como seu sistema inint. Para configurar seu serviço, você precisa criar o arquivo de unidade necessário, por exemplo, /etc/systemd/system/jenkins.service
.
[Unit]
Description=Jenkins
After=network.target
[Service]
Type=simple
ExecStart=/usr/java/jre1.8.0_131/bin/java -jar /usr/local/jenkins/jenkins.war
User=jenkins
[Install]
WantedBy=multi-user.target
Para carregar o serviço a ser executado na inicialização, execute systemctl daemon-reload
. systemctl start jenkins.service
inicia o serviço a partir da linha de comando.
Para obter documentação completa, consulte as páginas do manual . A página de internet do Systemd também tem muito material para estudos mais aprofundados.
Caso você esteja usando o estilo de inicialização SysV, é necessário escrever um script de inicialização que inicie seu daemon em /etc/init.d/
, por exemplo, /etc/init.d/jenkins
(e marque-o como executável).
#!/bin/sh
### BEGIN INIT INFO
# Provides: jenkins
# Default-Start: 2 3 4 5
# Default-Stop: 1
### END INIT INFO
EXEC="/usr/java/jre1.8.0_131/bin/java"
ARGS="-jar /usr/local/jenkins/jenkins.war"
USER="jenkins"
PIDFILE="/run/jenkins.pid"
. /lib/lsb/init-functions
case "$1" in
start)
start-stop-daemon --start --background --chuid $USER \
--make-pidfile --pidfile $PIDFILE --exec $EXEC -- $ARGS
;;
stop)
start-stop-daemon --stop --pidfile $PIDFILE --exec $EXEC
;;
*)
echo "Usage: /etc/init.d/jenkins {start|stop}"
exit 1
;;
esac
exit 0
Note que você deve bifurcar seu serviço em seu script de init, caso contrário seu script não sairá, neste exemplo start-stop-daemon faz bifurcação ( --background
) e troca de usuário ( --chuid
). Para estudar como outros serviços são iniciados em seu sistema usando scripts de inicialização, você pode estudar os arquivos em /etc/init.d/
.
Para permitir que o serviço inicie no momento da inicialização, execute update-rc.d jenkins enable
. Para iniciar o serviço, execute seu novo script /etc/init.d/jenkins start
.
Os scripts init compatíveis com LSB também são compatíveis com versões anteriores do sistema. Lembre-se de utilizar /lib/lsb/init-functions
para que o systemctl trabalhe de forma transparente ao executar o script diretamente.
Debian wiki para LSBInitScripts fornece mais detalhes sobre as opções disponíveis, como iniciar o serviço após / antes de outro serviço.