Systemd es un administrador de servicios que le brinda funciones de administración de demonios, seguimiento de procesos, montaje, montaje automático. Utiliza un grupo de control de Linux para administrar la tarea. Reemplaza al antiguo initd y está disponible en las distribuciones Debian, Fedora, RedHat, ubuntu, centos, arch Linux.
En este artículo, le mostraré cómo crear un servicio usando systemd. Crearé un script manual que actuará como un proceso para encontrar la utilización del disco del sistema Linux.
Empecemos. Cree un script bash que redireccione la fecha y la utilización del disco en un archivo. Puede crear archivos en cualquier ubicación. Aquí lo voy a hacer en el directorio ejecutable /usr/bin
$ sudo vim /usr/bin/script.sh
Copie y pegue el siguiente script y guarde su archivo.
#!/bin/bash # Script generates disk utilization by the system and store in a file while true do date >> /var/storage-monitor.txt sudo du -sch / >> /var/storage-monitor.txt sleep 120 done
Haga que el archivo sea ejecutable ejecutando el siguiente comando.
$ chmod +x /usr/bin/script.sh
Ahora, hagamos un servicio para ejecutar el script. Simplemente cree un archivo en el siguiente directorio. Tenga en cuenta que puede dar cualquier nombre, pero debe terminar con la extensión .service.
$ vim /etc/systemd/system/monitor-disk.service
Y agregue lo siguiente,
[Unit] Description=My disk monitoring service Documentation=https://www.kernel.org/ #After=networking.service [Service] Type=simple User=root Group=root TimeoutStartSec=0 Restart=on-failure RestartSec=30s #ExecStartPre= ExecStart=/usr/bin/script.sh SyslogIdentifier=Diskutilization #ExecStop= [Install] WantedBy=multi-user.target
Explicación
- La sección [Unidad] consta de descripción, detalles de documentación. Aquí mencioné 'Después', que establece que el servicio que vamos a crear debe ejecutarse primero.
- La sección [Servicio] define el tipo de servicio, nombre de usuario, grupo, qué hacer en caso de falla, tiempo de espera de reinicio. El principal es 'ExecStart' que dice que inicie nuestro archivo de script. También puede definir 'ExecStartPre' para definir cualquier cosa antes del archivo de script real. ‘SyslogIdentifier’ es la palabra clave para identificar nuestro servicio en syslog. De manera similar, ExecStop es la instrucción para decir qué hacer para detener el servicio.
- La sección [Instalar] se usa para definir diferentes niveles de destino en el sistema.
Simplemente guarde el archivo e inicie el servicio usando el comando systemctl.
$ systemctl start monitor-disk.service
Verifique el estado del servicio usando el comando systemctl status. También puede ver el nombre del servicio, el formulario de archivo donde se carga el servicio systemd, la documentación, el proceso en ejecución y los registros.
$ systemctl status monitor-disk.service
Verifique que su secuencia de comandos funcione correctamente examinando el archivo definido en el archivo de secuencia de comandos.
$ cat /var/storage-monitor.txt
También puede verificar la función habilitar, deshabilitar del administrador systemd.
$ systemctl enable monitor-disk.service
$ systemctl disable monitor-disk.service
Además, verifique deteniendo y reiniciando el servicio. No se debe arrojar ningún error.
$ systemctl stop monitor-disk.service
$ systemctl restart monitor-disk.service
Systemd también habilita el inicio de sesión predeterminado en syslog. Entonces, puede ver el registro en vivo del servicio usando el siguiente comando. Busque la palabra clave 'SyslogIdentifier=Diskutilization'
usted negó en el archivo de servicio anterior.
$ tail -f /var/log/syslog
Conclusión
Este artículo le muestra cómo ejecutar su propio script de shell como un servicio systemd. Esperamos que hayas aprendido a hacer tu propio servicio. No dude en enviar sus comentarios.