Una de las herramientas más poderosas y útiles para los usuarios de Linux, especialmente distribuciones modernas como Ubuntu, es comando systemctl. Esta utilidad de línea de comandos se utiliza normalmente para interactuar con systemd, el sistema y el administrador de servicios.
A través del comando, puede administrar los servicios del sistema, ver su estado, iniciarlos o detenerlos y habilitarlos y deshabilitarlos al iniciar el sistema. Bastante útil, ¿verdad? Pero si el comando systemctl no se encuentra o no se reconoce, se enfrentará al problema "sudo:systemctl: comando no encontrado" error.
Entonces, hablemos sobre lo que significa el error "systemctl: comando no encontrado", las diversas razones por las que enfrenta este error y cómo solucionarlo.
¿Qué significa systemctl: comando no encontrado?
En pocas palabras, el error "systemctl: comando no encontrado" significa que la utilidad de línea de comandos systemctl no está disponible o no es accesible en el entorno actual. Esto puede deberse a una serie de razones, todas las cuales se remontan a que el entorno no es un entorno de sistema o que el paquete systemd no está instalado en el sistema.
Básicamente, el paquete systemd no está instalado, o su distribución o versión de Linux no usa systemd; más bien, utiliza 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, lo que significa que su shell no puede encontrarlo.
Ahora que tiene una idea de lo que podría estar mal en su sistema, lo que lleva al error "systemctl: comando no encontrado", veamos cómo puede verificar dónde radica su problema y cómo solucionarlo.
Arreglando systemctl: Error de comando no encontrado
En los siguientes pasos, verificaremos si su sistema tiene systemd instalado y usa systemctl o no, así como también verificaremos la ruta de systemctl. Una vez que hayamos verificado el problema, tomaremos los pasos necesarios para corregir el error.
1. Verificar si su sistema usa systemd
Dado que Ubuntu systemctl solo se puede usar si tiene instalado el paquete systemd, primero verificaremos si su sistema debe usar systemd ejecutando el siguiente comando:
ps -p 1 -o comm=
O puede verificar la versión de systemd con el siguiente comando:
systemd --version
Si el resultado es systemd, entonces systemd es su sistema de inicio y debería tener Ubuntu systemctl instalado. Sin embargo, si el resultado es init u otro administrador de procesos, significa que su sistema está usando un sistema de inicialización alternativo y systemctl no funcionará a menos que migre a systemd.
Si ve sistemas de inicialización más antiguos como Upstart o SysVinit y desea cambiar a systemd para usar systemctl, siga estos pasos:
1. Instale systemctl instalando systemd usando el siguiente comando:
sudo apt install systemd-sysv
2. Reinicie su sistema ejecutando este comando:
sudo reboot
3. Verifique que su sistema ahora esté usando systemd:
ps -p 1 -o comm=
La salida debería ser systemd ahora.
2. Asegurarse de que systemd esté instalado correctamente
En circunstancias normales, cuando systemd está instalado y se ejecuta como su sistema de inicio, el comando systemctl debería funcionar correctamente. Si no es así, significa que falta el paquete systemd o está mal instalado.
Tenga en cuenta que si está utilizando 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 de forma predeterminada. Para instalar systemctl mediante la instalación de systemd, ejecute los siguientes comandos:
sudo apt update sudo apt install systemd
Una vez instalado, verifique si el comando systemctl está disponible.
3. Comprobando la RUTA de systemctl
Un problema común con el error systemctl not found es que systemctl podría estar instalado, pero no está en la RUTA de su sistema. Para verificar si los archivos binarios de systemd existen o no en los directorios típicos donde se encuentran, como /bin, /usr/bin o /usr/local/bin, puede usar el siguiente comando:
which systemctl
Si systemctl se encuentra en cualquiera de sus directorios enumerados en PATH, debería obtener un resultado como este:
/usr/bin/systemctl
Si systemctl no se encuentra en ninguno de los directorios de PATH, el comando which no devolverá nada.
Sin embargo, es posible que systemctl aún no funcione aunque se encuentre en sus directorios. Esto se debe a que systemctl podría estar ubicado en un directorio que no está incluido en la RUTA. En esta situación, deberá verificar si el directorio donde se encuentra systemctl es parte de su sistema usando el siguiente comando:
echo $PATH
La salida debería ser algo como esto:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Ahora, todo lo que tiene que hacer es verificar si el directorio en el que reside systemctl (que obtuvo del comando what) está incluido en los directorios enumerados en la salida del comando echo $PATH.
Si el directorio de systemctl no está incluido en la salida de echo $PATH, tendrás que agregarlo a tu variable PATH. Para hacer esto, deberá ejecutar el siguiente comando:
Para Usuarios de shell Bash, abra el archivo ~/.bashrc en un editor de texto:
nano ~/.bashrc
Agregue 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, guarde y cierre el archivo presionando CTRL + X, luego Y para confirmar y Enter para guardar.
Para Usuarios de Zsh, Abra el archivo ~/.zshrc en un editor de texto:
nano ~/.zshrc
Agregue 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, guarde y cierre el archivo presionando CTRL + X, luego Y para confirmar y Enter para guardar.
Una vez que haya terminado con los pasos anteriores, use el comando echo $PATH para verificar si el directorio de su systemctl se ha agregado a su RUTA. Ahora, debería poder ejecutar systemctl sin encontrarse con el error "systemctl: comando no encontrado".
4. Reinstalar systemd
Si las correcciones anteriores no funcionan y aún enfrenta el error de comando no encontrado, reinstalar systemd por completo podría resolver el problema. Para hacer esto, ejecute los siguientes comandos:
sudo apt purge systemd sudo apt install systemd
Luego, reinicie su sistema con este comando:
sudo reboot
Verifique si systemctl funciona.
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 genera un error "systemctl: comando no encontrado". Todo lo que tienes que hacer para solucionar este problema es ejecutar el siguiente comando y listo:
sudo dpkg-reconfigure systemd
6. Subsistema de Windows obsoleto para Linux (WSL)
Si estás usando Ubuntu en WSL (Subsistema de Windows para Linux) Debes saber que las versiones anteriores de WSL, como WSL 1, no son compatibles de forma nativa con systemctl, por lo que no importa cuál de las correcciones anteriores utilices, no podrás ejecutar systemctl.
Si desea aprovechar las funciones de systemctl, deberá actualizar a WSL 2, que tiene mejor soporte para systemd. Si no está seguro de si está utilizando WSL o no, puede comprobarlo utilizando el siguiente comando:
uname -a
Si el resultado menciona WSL, entonces es por eso que aparece el error "systemctl: comando no encontrado".
7. Uso del servicio sudo como alternativa a systemctl
Si se enfrenta al error "systemctl: comando no encontrado" porque su sistema no usa systemd, puede usar el comando sudo service para administrar los servicios. Este comando funciona con sistemas de inicio más antiguos como SysVinit o Upstart. Esto es útil para sistemas Ubuntu que dependen de scripts de inicio en lugar de systemd.
Por ejemplo, para iniciar un servicio, ejecutaría:
sudo service <service_name> start
Pensamientos finales
systemd y su utilidad de línea de comandos systemctl han reemplazado a la mayoría de los otros sistemas de inicio antiguos como SysVinit y Upstart. Si bien es posible que systemd no sea del agrado de todos debido a su diseño monolítico y su filosofía no Unix, systemd todavía se considera generalmente como la opción predominante. Entonces, con suerte, has podido resolver el error de comando systemctl no disponible, ya que no poder usar la utilidad de línea de comandos de systemd limita severamente sus capacidades.
Preguntas frecuentes
¿Qué es systemctl y qué significa systemctl: comando no encontrado?
systemctl es una herramienta de línea de comandos que se utiliza para administrar servicios en sistemas Linux que ejecutan systemd, como Ubuntu. El error "systemctl: comando no encontrado" ocurre cuando la herramienta no está disponible o no es accesible, generalmente porque el sistema no usa systemd o el paquete systemd no está instalado.
¿Systemctl está disponible en todas las versiones de Ubuntu?
No, systemctl no está disponible en todas las versiones de Ubuntu. systemctl es parte del sistema de inicio systemd, que es el predeterminado en la mayoría de las versiones modernas de Ubuntu (desde 15.04 en adelante). Las versiones anteriores o ciertas instalaciones mínimas pueden utilizar sistemas de inicio alternativos como SysVinit o Upstart.