Systemd es un gestor de demonios (daemons) de Linux; así que lo usaremos para gestionar un proceso o servicio que crearemos y deseamos que se ejecute al inicio del sistema.
En este artículo:
Primero creamos un archivo (un archivo unit file) con extensión .service (hay otras extensiones pero en este caso usaremos esta), que servirá para configurar el servicio;
lo llamamos “nombre_servicio.service” en /lib/systemd/system
Y lo rellenamos con lo siguiente (evidentemente hay que personalizar algunos datos en cada caso, como la descripción, el directorio …):
[Unit]
Description=La descripción adecuada para nuestro servicio
After=network.target
[Service]
User=root
WorkingDirectory=/root/directorio/subdirectorio
Type=simple
ExecStart=/root/directorio/subdirectorio
GuessMainPID=no
[Install]
WantedBy=multi-user.target
[Unit] : opciones genéricas
[Service] : opciones específicas para el tipo de extensión. En este caso extensión .service
[Install] : Info sobre la instalación del servicio.
Un detalle pequeño pero importante son las lineas de Working Directory y Exec Start.
Si no rellenamos estas lineas con la ruta adecuada, el servicio no iniciará correctamente.
WorkingDirectory es el directorio en el que se encuentra el ejecutable
WorkingDirectory=/root/serv/build/bin
Sino el servicio no se ejecuta correctamente
ExecStart necesita una ruta absoluta para funcionar. Si usamos una ruta relativa el servicio no funcionará correctamente.
Recargamos el daemon de los servicios:
sudo systemctl daemon-reload
Habilitamos el servicio creado:
sudo systemctl enable my.service
E iniciamos el servicio creado:
sudo systemctl start my.service
Para parar el servicio:
sudo systemctl stop my.service
Para reiniciar el servicio:
sudo systemctl restart my.service
systemctl status miservicio.service