Estamos utilizando el servidor Bamboo para la integración continua con agentes remotos que están construyendo nuestros proyectos. Estos agentes se pueden iniciar con un script de shell simple (que funciona bien). Pero pensé en moverlo aún más y convertirlo en systemd
una unidad que hará que el agente se inicie automáticamente después del arranque y permitirá a las personas iniciarlo/detenerlo mediante systemctl
comandos. Entonces esto es lo que he probado.
[Unit]
Description=Atlassian Bamboo Agent
After=syslog.target network.target
[Service]
Type=forking
User=shub
Group=shub
ExecStart=/home/shub/bamboo-agent-home/bin/bamboo-agent.sh start
ExecStop=/home/shub/bamboo-agent-home/bin/bamboo-agent.sh stop
[Install]
WantedBy=multi-user.target
De lo que lo he hecho yo systemctl daemon-reload
. El problema es que el agente no se inicia después del reinicio y también actúa de manera extraña (en cierto modo, el servicio se reinicia solo de vez en cuando o no aparece correctamente después systemctl start
). Entonces ¿qué estoy haciendo mal? Pensé en cambiar Type
a la simple
forma en que quiero que el agente se ejecute como un servicio en segundo plano (y el script en sí ejecuta el agente en segundo plano después de la ejecución).
Respuesta1
Hiciste varias preguntas. Responderé a la pregunta: "¿Por qué mi servicio systemd personalizado no se inicia al arrancar?"
La respuesta es porque no lo has hecho.activadoél. Cuando ejecuta systemctl enable my-service-name
, [Install]
se actúa sobre el bloque en su archivo de Unidad.
En este caso, le ha indicado a systemd que inicie el servicio como parte del proceso de alcanzar el archivo multi-user.target
.
La ejecución enable
del comando creará un enlace simbólico /etc/systemd/system/multi-user.target.wants/
y la presencia de ese enlace simbólico es lo que realmente indicará systemd
que se inicie el servicio al iniciar.
Sugiero convertir su comentario de "actuar de manera extraña" en una pregunta separada donde se brinden más detalles, tal vez con detalles del diario systemd sobre lo que está sucediendo. (verifique journalctl
la salida).