El script que va a estar corriendo en segundo plano para controlar el consumo de RAM de mi PC, necesito iniciarlo y detenerlo a determinadas horas.
Iniciar el script no es problema con cron, el problema es cuando hay que detenerlo.
Una buena solución para gestionar tus scripts es crear un servicio con systemd.
Voy a explicar paso a paso cómo crear un servicio.
Nos situaremos en este directorio donde están todos los servicios y crearemos la plantilla del nuevo servicio.
cd /etc/systemd/system/
Al servicio lo llamaré uso-memoria. Es conveniente que la extensión del archivo sea .service
sudo nano /etc/systemd/system/uso-memoria.service
Este es el ejemplo plantilla que utilizaremos para crear el servicio.
En este caso, el usuario que ejecutará el servicio es el usuario angel.
Si el usuario fuera el root, aquí tendría que haber puesto root.
[Unit]
Description=Control del uso de la memoria
After=network.target
[Service]
User=angel
ExecStart=/scripts/uso-memoria/uso-memoria
[Install]
WantedBy=multi-user.target
Le daremos todos los privilegios.
sudo chmod 777 /etc/systemd/system/uso-memoria.service
Habilitamos el servicio. Después de ejecutar este comando, cada vez que iniciemos nuestro PC el servicio se iniciará automáticamente.
sudo systemctl enable uso-memoria.service
Iniciar el servicio
sudo systemctl start uso-memoria.service
Ver el estado del servicio, si está corriendo o no.
sudo systemctl status uso-memoria.service
Detener el servicio
sudo systemctl stop uso-memoria.service
Comprobar si el servicio estará habilitado para el próximo arranque
sudo systemctl is-enabled uso-memoria.service
Deshabilitar el servicio
sudo systemctl disable uso-memoria.service
Borrar el servicio
sudo rm /etc/systemd/system/uso-memoria.service
Init
Systemd
Description
service name start
systemctl start name.service
Inicia un servicio
service name stop
systemctl stop name.service
Detiene un servicio
service name restart
systemctl restart name.service
Reinicia un servicio
service name condrestart
systemctl try-restart name.service
Reinicia un servicio solo si está en funcionamiento
service name reload
systemctl reload name.service
Recarga la configuración de un servcio
service name status
systemctl status name.service systemctl is-active name.service
Comprueba si un servicio está funcionando.
service --status-all
systemctl list-units type service all
Muestra el estado de todos los servicios.
chkconfig name on
systemctl enable name.service
Habilita un servicio
chkconfig name off
systemctl disable name.service
Deshabilita un servicio
chkconfig --list name
systemctl status name.service systemctl is-enabled name.service
Comprueba si un servición está habilitado
chkconfig --list
systemctl list-unit-files --type service
Lista todos los servicios y comprueba si están habilitados
chkconfig --list
systemctl list-dependencies --after
Lista los servicios que tienen que iniciarse antes de una unidad
chkconfig --list
systemctl list-dependencies --before
Lista los servicios que tienen que iniciarse después de una unidad
Fuente: Gestionar servicios en Systemd - Atareao
Publicado el domingo, 15 de enero de 2023
Powered by wdblog

Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional.