Comandos Clave: Niveles de Ejecucion y Targets de Systemd (101.3)

Indice

  1. Comandos de SysVinit
  2. Comandos de systemctl
  3. Comandos de apagado y reinicio
  4. Comunicacion con usuarios
  5. Tabla de equivalencia completa
  6. Archivos clave

1. Comandos de SysVinit

Gestion de runlevels

ComandoDescripcionEjemplo
runlevelMuestra el runlevel anterior y actualrunlevel -> N 3
init NCambia al runlevel Ninit 3
telinit NCambia al runlevel N (equivalente a init)telinit 5
init 0Apaga el sistemainit 0
init 1Modo monousuarioinit 1
init 6Reinicia el sistemainit 6

Gestion de servicios (SysVinit)

ComandoDescripcionEjemplo
service nombre startInicia un servicioservice apache2 start
service nombre stopDetiene un servicioservice ssh stop
service nombre restartReinicia un servicioservice networking restart
service nombre statusMuestra el estado de un servicioservice sshd status
/etc/init.d/nombre startInicia un servicio directamente/etc/init.d/apache2 start
update-rc.d nombre defaultsHabilita un servicio en runlevels por defecto (Debian)update-rc.d ssh defaults
update-rc.d nombre removeElimina los enlaces de un servicio (Debian)update-rc.d apache2 remove
chkconfig nombre onHabilita un servicio (Red Hat)chkconfig httpd on
chkconfig nombre offDeshabilita un servicio (Red Hat)chkconfig httpd off
chkconfig --listLista el estado de servicios por runlevel (Red Hat)chkconfig --list

2. Comandos de systemctl

Gestion de targets

ComandoDescripcionEjemplo
systemctl get-defaultMuestra el target por defectosystemctl get-default -> graphical.target
systemctl set-default targetEstablece el target por defectosystemctl set-default multi-user.target
systemctl isolate targetCambia al target indicado inmediatamentesystemctl isolate rescue.target
systemctl list-units --type=targetLista los targets activossystemctl list-units --type=target

Gestion de servicios

ComandoDescripcionEjemplo
systemctl start servicioInicia un serviciosystemctl start sshd.service
systemctl stop servicioDetiene un serviciosystemctl stop sshd.service
systemctl restart servicioReinicia un serviciosystemctl restart nginx.service
systemctl reload servicioRecarga la configuracion sin detener el serviciosystemctl reload apache2.service
systemctl status servicioMuestra el estado detallado del serviciosystemctl status sshd.service
systemctl enable servicioHabilita el servicio para arranque automaticosystemctl enable sshd.service
systemctl disable servicioDeshabilita el servicio del arranque automaticosystemctl disable sshd.service
systemctl is-active servicioVerifica si el servicio esta en ejecucionsystemctl is-active sshd.service
systemctl is-enabled servicioVerifica si el servicio esta habilitado en el arranquesystemctl is-enabled sshd.service
systemctl mask servicioEnmascara un servicio (impide su inicio)systemctl mask bluetooth.service
systemctl unmask servicioDesenmascara un serviciosystemctl unmask bluetooth.service

Listar y consultar unidades

ComandoDescripcionEjemplo
systemctl list-unitsLista todas las unidades activassystemctl list-units
systemctl list-units --allLista todas las unidades (activas e inactivas)systemctl list-units --all
systemctl list-units --type=serviceLista solo los servicios activossystemctl list-units --type=service
systemctl list-units --type=service --allLista todos los serviciossystemctl list-units --type=service --all
systemctl list-unit-filesLista archivos de unidad instaladossystemctl list-unit-files
systemctl list-unit-files --type=serviceLista archivos de servicio instaladossystemctl list-unit-files --type=service
systemctl list-dependencies targetMuestra las dependencias de un targetsystemctl list-dependencies multi-user.target
systemctl cat servicioMuestra el contenido del archivo de unidadsystemctl cat sshd.service
systemctl show servicioMuestra todas las propiedades de un serviciosystemctl show sshd.service
systemctl daemon-reloadRecarga la configuracion de systemdsystemctl daemon-reload

3. Comandos de apagado y reinicio

Comando shutdown

ComandoDescripcion
shutdown -h nowApaga el sistema inmediatamente
shutdown -h +10Apaga el sistema en 10 minutos
shutdown -h 23:00Apaga el sistema a las 23:00
shutdown -r nowReinicia el sistema inmediatamente
shutdown -r +5 "mensaje"Reinicia en 5 minutos con un mensaje para los usuarios
shutdown -cCancela un apagado/reinicio programado
shutdown -c "mensaje"Cancela con un mensaje explicativo
shutdown -k +10 "mensaje"Solo avisa (no apaga realmente)

Equivalencias entre comandos de apagado

AccionSysVinitSystemdOtros
Apagarinit 0, telinit 0systemctl poweroffshutdown -h now, poweroff
Reiniciarinit 6, telinit 6systemctl rebootshutdown -r now, reboot
Detener (sin apagar HW)-systemctl halthalt
Monousuarioinit 1, telinit 1systemctl isolate rescue.targetshutdown now (algunas distros)
Suspender-systemctl suspend-
Hibernar-systemctl hibernate-

4. Comunicacion con usuarios

ComandoDescripcionEjemplo
wall "mensaje"Envia un mensaje a todos los usuarios conectadoswall "El sistema se reiniciara en 10 minutos"
wall < archivoEnvia el contenido de un archivo como mensajewall < /tmp/aviso.txt
echo "msg" | wallEnvia un mensaje por pipeecho "Mantenimiento" | wall

Nota: shutdown con un tiempo futuro envia automaticamente mensajes a los usuarios conectados. No es necesario usar wall adicionalmente si ya se usa shutdown con mensaje.


5. Tabla de equivalencia completa

Runlevels <-> Targets <-> Descripcion

RunlevelTarget de systemdEnlace de compatibilidadDescripcion
0poweroff.targetrunlevel0.targetApagado del sistema
1rescue.targetrunlevel1.targetModo monousuario / rescate
2multi-user.targetrunlevel2.targetMultiusuario (sin red en algunas distros)
3multi-user.targetrunlevel3.targetMultiusuario con red, modo texto
4multi-user.targetrunlevel4.targetPersonalizable (no definido)
5graphical.targetrunlevel5.targetMultiusuario con entorno grafico
6reboot.targetrunlevel6.targetReinicio del sistema

Equivalencias de acciones comunes

AccionSysVinitSystemd
Ver runlevel/target actualrunlevelsystemctl get-default
Cambiar runlevel/target por defectoEditar /etc/inittabsystemctl set-default target
Cambiar runlevel/target en vivoinit N / telinit Nsystemctl isolate target
Iniciar servicioservice nombre startsystemctl start nombre
Detener servicioservice nombre stopsystemctl stop nombre
Reiniciar servicioservice nombre restartsystemctl restart nombre
Estado de servicioservice nombre statussystemctl status nombre
Habilitar en arranquechkconfig nombre on (RH) / update-rc.d nombre defaults (Deb)systemctl enable nombre
Deshabilitar en arranquechkconfig nombre off (RH) / update-rc.d nombre remove (Deb)systemctl disable nombre
Listar servicioschkconfig --list (RH)systemctl list-units --type=service

Convencion de scripts SysVinit (S y K)

PrefijoSignificadoAccionEjemplo
SStartSe ejecuta con start al entrar en el runlevelS01networking -> inicia red primero
KKillSe ejecuta con stop al entrar en el runlevelK01apache2 -> detiene Apache primero
NumeroOrdenMenor numero = se ejecuta antesS01 antes que S99

6. Archivos clave

Archivos de configuracion

Archivo / DirectorioSistemaDescripcion
/etc/inittabSysVinitConfiguracion principal: runlevel por defecto y acciones
/etc/init.d/SysVinitDirectorio de scripts de inicio de servicios
/etc/rc.d/rc[0-6].d/SysVinit (Red Hat)Enlaces simbolicos S/K para cada runlevel
/etc/rc[0-6].d/SysVinit (Debian)Enlaces simbolicos S/K para cada runlevel
/lib/systemd/system/systemdArchivos de unidad del sistema (paquetes)
/etc/systemd/system/systemdArchivos de unidad del administrador (prioridad alta)
/etc/systemd/system/default.targetsystemdEnlace simbolico al target por defecto
/run/systemd/system/systemdArchivos de unidad generados en tiempo de ejecucion

Archivos de acpid

Archivo / DirectorioDescripcion
/etc/acpi/Directorio principal de configuracion de acpid
/etc/acpi/events/Reglas de eventos ACPI
/etc/acpi/actions/Scripts de acciones para eventos ACPI

Referencia rapida de flujo de trabajo

Cambiar el target por defecto en systemd

# Ver el target actual
systemctl get-default
 
# Cambiar a modo texto
systemctl set-default multi-user.target
 
# Cambiar a modo grafico
systemctl set-default graphical.target

Cambiar de target en tiempo real

# Ir a modo rescate (monousuario)
systemctl isolate rescue.target
 
# Ir a modo multiusuario
systemctl isolate multi-user.target
 
# Ir a modo grafico
systemctl isolate graphical.target

Apagado seguro con aviso

# 1. Avisar a los usuarios
wall "ATENCION: El servidor se reiniciara en 15 minutos"
 
# 2. Programar el reinicio (envia avisos automaticos)
shutdown -r +15 "Reinicio por mantenimiento"
 
# 3. Cancelar si es necesario
shutdown -c "Reinicio cancelado"

Gestionar un servicio

# Ver estado
systemctl status nginx.service
 
# Iniciar y habilitar en el arranque
systemctl start nginx.service
systemctl enable nginx.service
 
# O ambos a la vez
systemctl enable --now nginx.service