Lo primero que tienes que tener en cuenta es saber dónde van a quedar ubicados tus scripts, que estarán en /etc/systemd/system
Como systemd controla otros aspectos del sistema operativo necesita un poco más de información. Con systemd, para invocar un script necesitas colocarlo como un demonio del sistema, por lo tanto tendrás que escribirlo de tal forma que systemd lo entienda.
Lo primero que tienes que tener en cuenta es la denominación del script, que debe tener esta estructura en su nombre: "ejemplo.service" Además, el fichero tendrá que tener los permisos -rwxr-xr-x
Para crear el contenido del script, puedes tomar como ejemplo el script que te dejo a continuación, que básicamente está compuesto de tres partes:
[Unit]
Description=okboard reset to avoid fails
After=syslog.target
[Service]
Type=forking
ExecStart=/home/nemo/ejemplo.sh
[Install]
WantedBy=multi-user.target
En la sección ExecStart=/home/nemo/ejemplo.sh se da la ruta en dónde realmente está el script a ejecutar. Y el tipo de demonio que va a ser en:
[Service]
Type=forking
Por último, la sección [Install] nos dice en qué runlevel se ejecutará. En el modo multiusuario o en el clásico sysv, que sería el runlevel 3.
[Install]
WantedBy=multi-user.target
Con esto ya tenemos todo listo para agregar nuestro script al inicio del sistema.
Ahora haría falta configurar el script con las órdenes propiamente dichas para que systemd ejecute al inicio del sistema exactamente lo que quieres. Este script tendrá que tener una estructura como la que te expongo a continuación:
#!/bin/sh
#function: resetea Okboard
rm /home/nemo/.local/share/okboard/*
Este script, con permisos -rwxr-xr-x , deberá estar en la ruta y con el nombre que previamente hayamos configurado en ejemplo.service en el apartado
[Service]
ExecStart=/home/nemo/ejemplo.sh
Es fundamental que el script comience con
#!/bin/sh
para que systemd entienda que es un script ejecutable de bash en shell.
Una vez configurado todo, antes de ejecutar la nueva configuración, primero hay que refrescar systemd para que lea de nuevo los servicios
systemctl daemon-reload
Para levantar el nuevo script:
systemctl start ejemplo.service
Esto iniciará el servicio (no debe mostrar errores).
Y para verificar que el servicio se esté ejecutando con normalidad:
systemctl status ejemplo.service
Nos mostrará algo similar a lo siguiente:
ejemplo.service - Daemon of example
Loaded: loaded (/etc/systemd/system/ejemplo.service; enabled)
Active: activating (start) since Tue, 00 Sep 2010 10:04:02 -0600; 9s xx
Control: 23604 (lkl)
CGroup: name=systemd:/system/ejemplo.service
└ 23604 /usr/sbin/example
Sep 04 22:04:02 xxx ejemplo[23604]:
Ahora que acabas de verificar que el servicio está activo, sólo queda habilitar el servicio para el autoarranque
systemctl enable ejemplo.service
Si todo va bien, el sistema devolverá el mensaje:
ln -s '/etc/systemd/system/okboard.service' '/etc/systemd/system/multi-user.target.wants/okboard.service'
Lo que indicará que todo está correcto.
Con esto ya tendrás tu script ejecutándose al inicio del sistema y homologado al esquema de systemd.
Tweet |
0 comentarios:
Publicar un comentario