Reiniciar servicios con systemctl «systemd» es facil, pero antes me gustaria aclarar algo que a menudo se suele confundir:
No, systemd y systemctl no son lo mismo, aunque están estrechamente relacionados.
- systemd: Es un sistema de init y gestor de servicios para sistemas operativos Linux. Es responsable de arrancar y gestionar el sistema y los servicios en él. Además de iniciar los servicios,
systemd
gestiona dependencias entre servicios, maneja tareas de mantenimiento, y ofrece funcionalidades adicionales como el registro de eventos (logging) y la gestión de dispositivos (device management). - systemctl: Es una herramienta de línea de comandos utilizada para interactuar con
systemd
. Permite a los administradores de sistemas controlar y supervisar el estado de los servicios y las unidades en el sistema. Consystemctl
, se pueden iniciar, detener, reiniciar servicios, habilitar o deshabilitar servicios para que se inicien automáticamente al arrancar el sistema, y realizar muchas otras tareas relacionadas con la gestión de servicios.
Aclarado este punto, hablemos de lo versatil que puede llegar a ser systemctl
Con systemctl podemos interactuar con cualquier servicio que estemos ejecutando, ejemplo: apache2, mysql, fail2ban, snort, etc….
En este ejemplo, explondre todo orientado a apache2.service, pero bien podria ser mysql.service, ssh.service sshd.service etc…
Iniciar un servicio
sudo systemctl start apache2.service
Reiniciar Servicios systemctl
sudo systemctl restart apache2.service
Detener un servicio
sudo systemctl stop apache2.service
Ver el estado un servicio systemctl
sudo systemctl status apache2.service
Añadir un servicio al inicio del sistema
sudo systemctl enable apache2.service
Quitar un servicio al inicio del sistema
sudo systemctl disable apache2.service
Espero que te sea tan util como me ha sido a mi.
Comentar… que me ha sido muy util usar systemctl status sobre servicios con | grep, y asi averiguar si los servicios estan activos
Os dejo el codigo por aqui, por si a alguien le es de ayuda o da «ideas» que siempre aportan
#!/bin/bash # Verificar el estado de Apache if sudo systemctl status apache2.service --no-pager | grep -q "Active: active (running)"; then apache_active=true else apache_active=false fi # Verificar el estado de MySQL if sudo systemctl status mysql.service --no-pager | grep -q "Active: active (running)"; then mysql_active=true else mysql_active=false fi # Verificar el estado de Fail2Ban if sudo systemctl status fail2ban.service --no-pager | grep -q "Active: active (running)"; then fail2ban_active=true else fail2ban_active=false fi # Verificar el estado de sshd if sudo systemctl status sshd.service --no-pager | grep -q "Active: active (running)"; then sshd_active=true else sshd_active=false fi echo "SSH está activo: $sshd_active" echo "Apache está activo: $apache_active" echo "MySQL está activo: $mysql_active" echo "Fail2Ban está activo: $fail2ban_active"
En este script compruebo que todos los servidores estan ok, y funcionando a la vez. puedes guardarlo en tu carpeta de binarios y darle permisos de ejecucion, asi podras ejecutarlo sin mas (como root, claro)
## Mueves tu archivo de script.sh a la carpeta de binarios cambiando el nombre por el comando que tu quieras, en este caso "miComando" sudo mv script.sh /usr/local/bin/miComando ## Das permisos de ejecucion al archivo "miComando" sudo chmod a+x /usr/local/bin/miComando ## Ahora puedes ejecutar "miComando" desde donde quieras sudo miComando SSH está activo: true Apache está activo: true MySQL está activo: true Fail2Ban está activo: true
Si te ha gustado dale like y compartelo, me ayuda y motiva a seguir subiendo cositas y tips 😀