Estoy intentando cargar un script al arrancar en Ubuntu Server 18.04. Mi .service
script está instalado en /etc/systemd/system
y puedo ejecutar:
service my-service start
y:
service my-service stop
Pero cuando intento ejecutar en el arranque (que según la web debería hacer) con:
service my-service enable
el sistema responde con:
my-service: unrecognised service
Buscar en la web solo me dice cómo hacerlo en versiones anteriores de Ubuntu que no se aplican a 18.04 y no puedo determinar la terminología correcta para encontrar la respuesta.
La secuencia de comandos:
# filename: /etc/systemd/system/my-service.service
[Unit]
Description=My Service
After=network.target
After=mysqld.service
[Service]
User=the-user
WorkingDirectory=/home/the-user/path-to-script
ExecStart=/home/the-user/path-to-script/start.sh
SuccessExitStatus=0
TimeoutStopSec=10
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
Mi pregunta es: ¿Qué estoy haciendo mal? ¿Cómo puedo iniciar este servicio al arrancar?
Respuesta1
Utilice el comando real, que systemd
sería:
sudo systemctl enable my-service
Como referencia, no es necesario utilizar el directorio principal del sistema para el archivo de unidad si desea que se ejecute para un usuario normal, por ejemplo el suyo. Puedes crearlo en un directorio como:
~/.config/systemd/user/
Entonces puedes hacer:
systemctl --user enable my-service
Esto evita la necesidad desudo
Como ha señalado en su comentario, cuando se ejecutan instancias por usuario de systemd
la User
directiva deberían estar ausentes
Respuesta2
Nota:
En otros casos en los que obtiene el mismo error:
El service
comando coloca elobjetoprimero !
service foo start
Elsystemctl
El comando hace lo contrario:
systemctl start foo
Además, en el servicio, no puede agregar ".service", mientras que puede hacerlo si usa systemctl.