Linux / Comando systemctl: consultar, iniciar y habilitar servicios
systemctl consulta el estado de los servicios y otras unidades gestionadas por systemd, y controla el inicio, la detención, el reinicio y el arranque automático al encender el sistema. Al investigar fallos en los servicios, primero verifique el estado actual con status. Las condiciones y procedimientos relacionados se pueden encontrar en Verificar servicios systemd y registros de arranque.
start es la acción que se ejecuta ahora y enable es la acción configurada para iniciarse durante el arranque. No se reemplazan automáticamente entre sí. active y enabled también representan el estado de activación de la unidad y la configuración de inicio, respectivamente. Especifique claramente el nombre de la unidad y revise los registros en journalctl -u.
Sintaxis básica
systemctl [OPCIONES] COMANDO [UNIDAD]
La implementación instalada y las opciones pueden variar según la distribución. Verifique la descripción de man systemctl en el sistema actual.
Ejemplos de uso
Verificación del estado del servicio
Cambie el nombre de unidad de ejemplo por el nombre real del servicio en el sistema.
systemctl status sshd.service
Verificar si se está ejecutando actualmente
Al comprobar el estado en un script, también confirme el estado de finalización.
systemctl is-active sshd.service
Verificar la configuración de inicio automático al arranque
Consulte el estado de 'enable' independientemente de la ejecución actual.
systemctl is-enabled sshd.service
Distinguir entre el estado del servicio y si se está ejecutando
systemctl is-active NOMBRE_SERVICIO indica brevemente el estado de ejecución actual. Los nombres de los servicios siguientes deben ajustarse según el entorno.
systemctl is-active sshd.service
Ejemplo de salida de un sistema con el servicio en ejecución:
active
En este ejemplo de SSH, active indica que la unidad está activa, pero el significado depende del tipo de unidad: un servicio oneshot puede permanecer activo sin mantener un proceso en ejecución. Compruebe por separado el inicio automático con systemctl is-enabled sshd.service. Antes de reiniciar un servicio, confirme su nombre, el impacto y los registros con status y journalctl -u.
start inicia actualmente el servicio y enable cambia la configuración de inicio automático al arrancar. Ninguno garantiza automáticamente al otro. Si ha modificado el archivo de unidad, vuelva a leer la definición con sudo systemctl daemon-reload y luego reinicie los servicios necesarios y verifique el estado y los registros.
Opciones y formatos principales
| Opciones·Formato | Descripción |
|---|---|
status UNIDAD |
Muestra el estado y un resumen de los registros recientes. |
start / stop UNIDAD |
Inicia o detiene la unidad actualmente. |
restart UNIDAD |
Al detener y reiniciar, se puede interrumpir la conexión. |
reload UNIDAD |
Si el servicio lo admite, vuelve a leer la configuración sin reiniciar. |
enable / disable UNIDAD |
Cambia la configuración de inicio automático al arrancar. |
Precauciones al usar
Detener o reiniciar servicios de acceso remoto o web puede interrumpir conexiones y solicitudes. Revise la unidad exacta, la ventana de mantenimiento y la recuperación. daemon-reload vuelve a leer las definiciones de unidades; no reinicia por sí mismo un servicio ni sustituye la recarga de su configuración. Estos comandos requieren un sistema gestionado por systemd.
Preguntas frecuentes
¿Se ejecuta inmediatamente un servicio al usar systemctl enable?
Normalmente no. Enable es la configuración de inicio automático al arranque. Si desea ejecutarlo ahora, debe ejecutar start por separado o usar la opción --now si está disponible.
Comparar el estado de ejecución e inicio automático en una unidad exclusiva para práctica
Se ejecuta en una VM de práctica exclusiva donde systemd es el proceso inicial, con identificador de proceso (PID) 1. Compruebe previamente systemctl cat lf-systemctl-lab.service; si ya existe una unidad o un complemento con ese nombre en cualquier ubicación, deténgase y elija otro nombre en todas las instrucciones. No se detienen los servicios SSH o web reales y se crea una nueva unidad oneshot. Si ya existen archivos o drop-ins con nombres fijos de práctica, se interrumpe. La activación cambia temporalmente la configuración de arranque, por lo que realice la limpieza después de completar el bloque.
(
set -eu
unit=lf-systemctl-lab.service
file=/etc/systemd/system/$unit
if sudo test -e "$file" || sudo test -L "$file" ||
sudo test -e "$file.d"; then
printf 'Lab name already exists; stop and choose another name.\n' >&2
exit 1
fi
sudo sh -c 'set -C; cat > "$1"' sh "$file" <<'EOF'
[Unit]
Description=Linux Factory systemctl state lab
[Service]
Type=oneshot
ExecStart=/usr/bin/true
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
EOF
sudo systemd-analyze verify "$file"
sudo systemctl daemon-reload
sudo systemctl start "$unit"
systemctl is-active "$unit"
sudo systemctl enable "$unit"
systemctl is-enabled "$unit"
sudo systemctl stop "$unit"
systemctl is-active "$unit" || true
systemctl is-enabled "$unit"
sudo systemctl disable "$unit"
systemctl is-enabled "$unit" || true
)
Después de start es active, después de enable es enabled. Después de stop, aunque sea inactive, enabled permanece, y después de disable es disabled. Este oneshot puede ser active aunque no haya un proceso en ejecución a largo plazo, porque RemainAfterExit=yes. Después de confirmar que el contenido del archivo es exactamente el mismo que en este ejemplo y que no hay otras ediciones, detenga y desactive con sudo systemctl disable --now lf-systemctl-lab.service, luego elimine solo /etc/systemd/system/lf-systemctl-lab.service que se creó esta vez y ejecute sudo systemctl daemon-reload. Incluso en caso de fallo, investigue y limpie solo el mismo objetivo.
Documentación oficial
El funcionamiento exacto de las opciones y las diferencias según la implementación se pueden consultar en la documentación oficial relacionada con systemctl.




