50% de descuento en todos los planes, por tiempo limitado. Desde $2.48/mo
7 min restantes
Servidores y SO

Cómo solucionar el error systemctl: Command Not Found en Ubuntu

Nick Plata By Nick Plata 7 min de lectura Actualizado el 20 de feb. de 2025
cómo solucionar el error systemctl: command not found

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.

Compartir

Más del blog

Sigue leyendo.

Mejores aplicaciones autoalojadas que puedes usar con Cosmos Cloud, imagen de portada con paneles de apps alrededor de un panel de Cosmos.
Servidores y SO

Las mejores aplicaciones autoalojadas para usar con Cosmos Cloud: archivos, multimedia, contraseñas, automatización y mucho más

Maybe ya tienes Cosmos Cloud en marcha y quieres saber qué aplicaciones encajan bien con él, o quizás aún no te has decidido por Cosmos y solo quieres ver si se adapta a tu flujo de trabajo

Nick PlataNick Plata 16 min de lectura
Portainer vs Cosmos Cloud para gestionar aplicaciones Docker: portada con diagrama de configuración híbrida y bloques de operaciones vs acceso en neón.
Servidores y SO

Portainer vs Cosmos Cloud: cuál encaja mejor para gestionar aplicaciones Docker

Si ya conoces Docker y solo quieres la forma más limpia de gestionar una pila de aplicaciones en crecimiento, aquí va la respuesta directa sobre Portainer vs Cosmos Cloud. Portainer es la mejor opción para el contro

Nick PlataNick Plata 14 min de lectura
Gráfico de Cosmos Cloud vs CasaOS vs Umbrel con tres rutas de autoalojamiento dentro de una red cloud abstracta.
Servidores y SO

Cosmos Cloud vs CasaOS vs Umbrel: ¿cuál encaja con tu configuración?

La respuesta corta: CasaOS sigue siendo el punto de partida más sencillo, Umbrel ofrece la experiencia más cuidada y seleccionada, y Cosmos Cloud tiene más sentido cuando necesitas un control más fino sobre el domi

Nick PlataNick Plata 11 min de lectura

¿Listo para desplegar? Desde 2,48 $/mes.

Cloud independiente, desde 2008. AMD EPYC, NVMe, 40 Gbps. 14 días de garantía de devolución.