Una de las herramientas más potentes y útiles para los usuarios de Linux, especialmente en distribuciones modernas como Ubuntu, es el comando systemctl. Esta utilidad de línea de comandos se usa principalmente para interactuar con systemd, el gestor del sistema y de servicios.
Con este comando puedes gestionar los servicios del sistema: ver su estado, iniciarlos o detenerlos, y habilitarlos o deshabilitarlos al arranque. Muy útil, ¿verdad? Pero si el comando systemctl no se encuentra o no es reconocido, te vas a encontrar con el «sudo:systemctl: command not found» error.
Veamos qué significa el error «systemctl: command not found», por qué aparece y cómo solucionarlo.
¿Qué significa el error «systemctl: command not found»?
En pocas palabras, el error "systemctl: command not found" indica que la utilidad de línea de comandos systemctl no está disponible o accesible en el entorno actual. Esto puede deberse a varios motivos, que en última instancia se reducen a dos: el entorno no es un entorno de sistema, o el paquete systemd no está instalado en el sistema.
En pocas palabras: el paquete systemd no está instalado, o tu distribución o versión de Linux no usa systemd, sino sistemas de gestión de servicios más antiguos como init.d. Otra posibilidad es que la variable de entorno PATH no incluya el directorio donde se encuentra systemctl, por lo que tu shell no puede encontrarlo.
Ahora que tienes una idea de qué podría estar fallando en tu sistema y causando el error «systemctl: command not found», veamos cómo identificar el origen del problema y cómo solucionarlo.
Cómo solucionar el error systemctl: Command Not Found
En los siguientes pasos, verificaremos si tu sistema tiene systemd instalado y usa systemctl, y también comprobaremos la ruta de systemctl. Una vez identificado el problema, aplicaremos los pasos necesarios para corregirlo.
1. Verificar si tu sistema usa systemd
Dado que Ubuntu systemctl solo funciona si tienes instalado el paquete systemd, primero vamos a comprobar si tu sistema debería usar systemd ejecutando el siguiente comando:
ps -p 1 -o comm=
También puedes comprobar la versión de systemd con el siguiente comando:
systemd --version
Si la salida es systemd, entonces systemd es tu sistema de inicio y debería tener Ubuntu systemctl instalado. En cambio, si la salida es init u otro gestor de procesos, significa que tu sistema usa un sistema de inicialización alternativo, y systemctl no funcionará a menos que migres a systemd.
Si ves sistemas de inicialización más antiguos como Upstart o SysVinit y quieres cambiar a systemd para poder usar systemctl, sigue estos pasos:
1. Instala systemctl instalando systemd con el siguiente comando:
sudo apt install systemd-sysv
2. Reinicia tu sistema ejecutando este comando:
sudo reboot
3. Comprueba que tu sistema usa ahora systemd:
ps -p 1 -o comm=
La salida debería ser systemd.
2. Asegurarse de que systemd está instalado correctamente
En condiciones normales, cuando systemd está instalado y se ejecuta como sistema de inicio, el comando systemctl debería funcionar sin problemas. Si no es así, significa que el paquete systemd falta o está instalado de forma incorrecta.
Ten en cuenta que si usas una versión mínima de Ubuntu, como un contenedor Docker o una instancia en la nube, es posible que systemd no se haya instalado por defecto. Para instalar systemctl mediante la instalación de systemd, ejecuta los siguientes comandos:
sudo apt update sudo apt install systemd
Una vez instalado, comprueba si el comando systemctl está disponible.
3. Comprobar el PATH de systemctl
Un problema habitual con el error systemctl not found es que systemctl puede estar instalado pero no estar incluido en el PATH de tu sistema. Para comprobar si los binarios de systemd existen en los directorios habituales donde se ubica, como /bin, /usr/bin o /usr/local/bin, puedes usar el siguiente comando:
which systemctl
Si systemctl se encuentra en alguno de los directorios listados en el PATH, obtendrás una salida como esta:
/usr/bin/systemctl
Si systemctl no se encuentra en ninguno de los directorios del PATH, el comando which no devolverá nada.
Sin embargo, systemctl podría seguir sin funcionar aunque aparezca en tus directorios. Esto se debe a que systemctl puede estar ubicado en un directorio que no está incluido en el PATH. En ese caso, tendrás que verificar si el directorio donde se encuentra systemctl forma parte de tu sistema usando el siguiente comando:
echo $PATH
La salida debería ser algo similar a esto:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Ahora solo tienes que comprobar si el directorio donde reside systemctl (el que obtuviste con el comando which) está incluido en los directorios que muestra la salida del comando echo $PATH.
Si el directorio de systemctl no aparece en la salida de echo $PATH, tendrás que añadirlo a tu variable PATH. Para ello, ejecuta el siguiente comando:
En cuanto al Usuarios de Bash, abre el archivo ~/.bashrc en un editor de texto:
nano ~/.bashrc
Añade la siguiente línea al final del archivo:
export PATH=$PATH:/usr/bin
/usr/bin es un directorio típico donde se encuentra systemctl en este ejemplo.
Ahora guarda y cierra el archivo pulsando CTRL + X, luego Y para confirmar y Enter para guardar.
En cuanto al Usuarios de Zsh, abre el archivo ~/.zshrc en un editor de texto:
nano ~/.zshrc
Añade la siguiente línea al final del archivo:
export PATH=$PATH:/usr/bin
/usr/bin es un directorio típico donde se encuentra systemctl en este ejemplo.
Ahora guarda y cierra el archivo pulsando CTRL + X, luego Y para confirmar y Enter para guardar.
Una vez completados los pasos anteriores, usa el comando echo $PATH para verificar que el directorio de systemctl se ha añadido a tu PATH. A partir de ahora, deberías poder ejecutar systemctl sin encontrar el error "systemctl: command not found".
4. Reinstalar systemd
Si las soluciones anteriores no funcionan y el error de comando no encontrado persiste, reinstalar systemd por completo puede resolver el problema. Para ello, ejecuta los siguientes comandos:
sudo apt purge systemd sudo apt install systemd
Luego reinicia el sistema con este comando:
sudo reboot
Comprueba si systemctl funciona correctamente.
5. Verificar que systemd está configurado correctamente
A veces el problema puede ser tan simple como una instalación mal configurada de systemd, lo que produce el error "systemctl: command not found". Para solucionarlo, basta con ejecutar el siguiente comando:
sudo dpkg-reconfigure systemd
6. Subsistema Windows para Linux (WSL) desactualizado
Si por casualidad estás usando Ubuntu bajo WSL (Subsistema de Windows para Linux) debes saber que las versiones antiguas de WSL, como WSL 1, no admiten systemctl de forma nativa. Por tanto, independientemente de cuál de las soluciones anteriores uses, no podrás ejecutar systemctl.
Si quieres aprovechar las funciones de systemctl, tendrás que actualizar a WSL 2, que ofrece mejor compatibilidad con systemd. Si no estás seguro de si estás usando WSL, puedes comprobarlo con el siguiente comando:
uname -a
Si la salida menciona WSL, esa es la razón por la que ves el error "systemctl: command not found".
7. Usar sudo service como alternativa a systemctl
Si ves el error "systemctl: command not found" porque tu sistema no usa systemd, puedes utilizar el comando sudo service para gestionar servicios. Este comando funciona con sistemas init más antiguos como SysVinit o Upstart, y es útil en sistemas Ubuntu que dependen de scripts init en lugar de systemd.
Por ejemplo, para iniciar un servicio ejecutarías:
sudo service <service_name> start
Conclusiones
systemd y su utilidad de línea de comandos systemctl han reemplazado a la mayoría de los sistemas init anteriores, como SysVinit y Upstart. Aunque systemd no sea del gusto de todos debido a su diseño monolítico y su filosofía alejada de Unix, sigue siendo la opción más extendida. Con suerte, habrás podido resolver el error de comando systemctl no disponible, ya que no poder usar la utilidad de línea de comandos de systemd limita considerablemente sus capacidades.
Preguntas frecuentes
¿Qué es systemctl y qué significa el error systemctl: command not found?
systemctl es una herramienta de línea de comandos para gestionar servicios en sistemas Linux que usan systemd, como Ubuntu. El error "systemctl: command not found" aparece cuando la herramienta no está disponible o no es accesible, normalmente porque el sistema no usa systemd o porque el paquete systemd no está instalado.
¿Está disponible systemctl en todas las versiones de Ubuntu?
No, systemctl no está disponible en todas las versiones de Ubuntu. systemctl forma parte del sistema de inicio systemd, que es el predeterminado en la mayoría de las versiones modernas de Ubuntu (desde la 15.04 en adelante). Las versiones más antiguas o ciertas instalaciones mínimas pueden usar sistemas de inicio alternativos como SysVinit o Upstart.