Vamos a crear un servicio que se autoejecute al inicio del sistema en Ubuntu 17, utilizando Systemd.
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.
Imagen bajo licencia Creative Commons Attribution-Share Alike 3.0 Unported license, Shmuel Csaba Otto Traian | ScotXW
En este artículo:
- 1. Creando el archivo que configurará el servicio.
- 1.1 Detalles importantes y explicaciones sobre servicios con systemd
- 1.2 Otras lineas de configuración importantes en systemd:
- 1.2 a) workingdirectory | explicación
- 1.2 b) execstart | explicación
- 2. Activación del servicio en Linux
- 2.1 Hacemos un Status del servicio (comprobamos el estado)
- 3. Enlaces interesantes sobre systemd y servicios en ubuntu
1. CREANDO EL ARCHIVO QUE CONTENDRÁ EL SERVICIO
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 |
1.1 DETALLES IMPORTANTES Y EXPLICACIONES SOBRE SERVICIOS EN SYSTEMD
[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.
1.2 Otras lineas de configuración importantes:
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.
1.2 a) WorkingDirectory | Explicación
WorkingDirectory es el directorio en el que se encuentra el ejecutable
WorkingDirectory=/root/serv/build/bin |
Sino el servicio no se ejecuta correctamente
1.2 b) ExecStart | Explicación
ExecStart necesita una ruta absoluta para funcionar. Si usamos una ruta relativa el servicio no funcionará correctamente.
2. ACTIVACIÓN DEL SERVICIO
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 |
2.1 HACEMOS UN STATUS DEL SERVICIO (Comprobamos el estado)
systemctl status miservicio.service |
3. ENLACES INTERESANTES SOBRE SYSTEMD Y SERVICIOS EN UBUNTU