Introducción
Uno de los errores más frustrantes para los administradores de sistemas y usuarios avanzados de Linux al utilizar el gestor de servicios systemd es el mensaje de error Unit not found. Este problema ocurre cuando intentas iniciar, detener o comprobar el estado de un servicio (como Apache, Nginx, MySQL o SSH) utilizando el comando systemctl, pero el sistema operativo es incapaz de localizar el archivo de configuración correspondiente.
Causas principales del error Unit Not Found
- El paquete del servicio no está instalado en el sistema.
- El nombre del servicio está mal escrito o el comando contiene errores tipográficos.
- El archivo de unidad (unit file) fue eliminado o corrompido.
- El demonio
systemdno ha recargado los cambios recientes realizados en el directorio de servicios.
Método 1: Verificar la existencia e instalación del paquete
A menudo, el error surge simplemente porque el software asociado al servicio no se encuentra instalado en la distribución. Sigue estos pasos para comprobarlo:
- Abre tu terminal de Linux con privilegios de administrador.
- Ejecuta el gestor de paquetes de tu distribución (por ejemplo, APT en Ubuntu/Debian) para buscar el paquete:
sudo apt search nombre_del_servicio. - Si no está instalado, procede a instalarlo mediante el comando correspondiente:
sudo apt install nombre_del_paquete.
Método 2: Recargar el demonio de systemd
Si acabas de instalar un servicio o has modificado manualmente un archivo de configuración, es muy probable que systemd no lo tenga registrado en su caché actual. Actualiza el demonio con los siguientes pasos:
- Ejecuta el comando para recargar todas las unidades y refrescar el demonio:
sudo systemctl daemon-reload. - Vuelve a intentar iniciar o comprobar el servicio afectado:
sudo systemctl start nombre_del_servicio.
Método 3: Comprobar el nombre exacto del servicio
Los nombres de los servicios pueden variar ligeramente entre diferentes distribuciones de Linux (por ejemplo, apache2 en Ubuntu y httpd en CentOS/RHEL). Para listar todos los servicios disponibles y encontrar el nombre exacto:
- Ejecuta el siguiente comando para ver la lista completa de unidades activas o instaladas:
systemctl list-unit-files --type=service. - Utiliza el comando
greppara filtrar la búsqueda de manera eficiente:systemctl list-unit-files | grep palabra_clave. - Una vez identificado el nombre correcto, ejecuta la acción deseada utilizando ese identificador exacto.