Autor: Joel Barrios Dueñas
Correo electrónico: darkshram en gmail punto com
Sitio de Red: https://www.alcancelibre.org
Licencia Creative Commons
© 1999-2026 Joel Barrios Dueñas. Este manual se distribuye bajo la licencia Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional (CC BY-NC-SA 4.0). Usted es libre de compartir y adaptar el material bajo los siguientes términos: debe dar crédito al autor, no puede utilizarlo para fines comerciales y debe compartir las obras derivadas bajo la misma licencia. La licencia completa está disponible en https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode.es.
La gestión de servicios es fundamental para administrar un sistema Linux. Un servicio es un programa que trabaja en segundo plano, sin intervención directa del usuario, proporcionando funcionalidades específicas al sistema. Este manual se enfoca exclusivamente en la gestión de servicios utilizando SysVinit ―sistema de inicialización utilizado por ALDOS―, con énfasis en el enfoque pedagógico y práctico para fines educativos y didácticos.
Los niveles de ejecución definen el estado operativo del sistema y qué servicios deben estar activos en cada momento. En SysVinit, los niveles de ejecución están numerados del 0 al 6.
0 - Apagado
1 - Mono-usuario (modo mantenimiento)
2 - Multi-usuario sin red
3 - Multi-usuario con red (modo texto)
4 - Sin usar (personalizable)
5 - Multi-usuario con red e interfaz gráfica
6 - Reinicio
Para conocer el nivel de ejecución actual, utilice:
who -r
O también:
runlevel
Este último mandato mostrará el nivel anterior y el actual. Por ejemplo: N 3 indica que no había nivel anterior y el actual es el nivel 3.
Para cambiar temporalmente a otro nivel de ejecución:
init 3 # Cambia a nivel 3 (multi-usuario con red)
Para cambiar permanentemente el nivel de ejecución predeterminado, edite el archivo /etc/inittab:
vim /etc/inittab
Busque la línea similar a:
id:5:initdefault:
Cambie el número según el nivel deseado. Por ejemplo, para nivel 3 (modo texto):
id:3:initdefault:
Importante: Después de editar /etc/inittab, el cambio surtirá efecto tras el siguiente reinicio del sistema.
SysVinit utiliza guiones de instrucciones ubicados en el directorio /etc/init.d para controlar cada servicio. Estos guiones aceptan argumentos como start, stop, restart, reload y status.
service srvejemplo start
Ejemplo con el servicio de tareas programadas:
service crond start
service srvejemplo stop
Ejemplo:
service crond stop
service srvejemplo restart
Ejemplo:
service crond restart
Algunos servicios soportan recargar su configuración sin necesidad de reiniciarse completamente:
service srvejemplo reload
Ejemplo:
service crond reload
service srvejemplo status
Ejemplo:
service crond status
El mandato chkconfig permite administrar en qué niveles de ejecución un servicio debe iniciarse automáticamente.
chkconfig srvejemplo on
Ejemplo:
chkconfig crond on
Esto activará el servicio en los niveles de ejecución predeterminados (generalmente 2, 3, 4 y 5).
chkconfig srvejemplo off
Ejemplo:
chkconfig crond off
chkconfig --list srvejemplo
Ejemplo:
chkconfig --list crond
Para ver todos los servicios y su configuración por niveles:
chkconfig --list
Puede especificar exactamente en qué niveles debe activarse o desactivarse un servicio:
chkconfig --level niveles srvejemplo on|off
Ejemplo para activar crond sólo en niveles 3 y 5:
chkconfig --level 35 crond on
Ejemplo para desactivar atd en todos los niveles:
chkconfig --level 0123456 atd off
Estos son algunos servicios importantes en ALDOS y su gestión:
El servicio crond ejecuta tareas programadas en momentos específicos. Es esencial para automatización.
service crond start # Iniciar
service crond stop # Detener
service crond restart # Reiniciar
service crond reload # Recargar configuración
service crond status # Ver estado
chkconfig crond on # Habilitar al inicio
chkconfig crond off # Deshabilitar al inicio
El servicio atd permite ejecutar mandatos una sola vez en un momento específico.
service atd start # Iniciar
service atd stop # Detener
service atd status # Ver estado
chkconfig atd on # Habilitar al inicio
chkconfig atd off # Deshabilitar al inicio
El servicio network gestiona las interfaces de red del sistema.
service network start # Iniciar interfaces de red
service network stop # Detener interfaces de red
service network restart # Reiniciar configuración de red
service network status # Ver estado de interfaces
chkconfig network on # Habilitar al inicio
El servicio sshd permite conexiones seguras remotas al sistema.
service sshd start # Iniciar servidor SSH
service sshd stop # Detener servidor SSH
service sshd restart # Reiniciar servidor SSH
service sshd reload # Recargar configuración
service sshd status # Ver estado
chkconfig sshd on # Habilitar al inicio
chkconfig sshd off # Deshabilitar al inicio
Siga estos pasos para practicar la gestión de servicios en un sistema con SysVinit:
Verifique el nivel de ejecución actual:
who -r
runlevel
Verifique el estado del servicio crond:
service crond status
Si el servicio está detenido, inícielo:
service crond start
Habilite el servicio crond para que inicie automáticamente en los niveles 3 y 5:
chkconfig --level 35 crond on
Verifique la configuración:
chkconfig --list crond
Detenga el servicio temporalmente:
service crond stop
Verifique que el servicio se detuvo:
service crond status
Reinicie el servicio:
service crond restart
Verifique el estado del servicio atd:
service atd status
chkconfig --list atd
Habilite el servicio atd para todos los niveles:
chkconfig atd on
Repita el ejercicio con el servicio sshd si está instalado en su sistema.
Para comprender mejor cómo funciona SysVinit, es útil conocer su estructura de directorios:
/etc/init.d # Guiones de instrucciones de inicio de servicios
/etc/inittab.d # Configuración adicional desde archivos *.tab
/etc/rc.d # Directorios de niveles de ejecución
/etc/rc.d/rc0.d # Guiones de instrucciones para nivel 0 (apagado)
/etc/rc.d/rc1.d # Guiones de instrucciones para nivel 1 (mono-usuario)
/etc/rc.d/rc2.d # Guiones de instrucciones para nivel 2
/etc/rc.d/rc3.d # Guiones de instrucciones para nivel 3
/etc/rc.d/rc4.d # Guiones de instrucciones para nivel 4
/etc/rc.d/rc5.d # Guiones de instrucciones para nivel 5 (gráfico)
/etc/rc.d/rc6.d # Guiones de instrucciones para nivel 6 (reinicio)
/etc/rc.d/rc.local # Guiones de instrucciones ejecutado al final del inicio
/etc/inittab # Configuración principal de init
Los directorios rcN.d contienen enlaces simbólicos a los guiones de instrucciones en /etc/init.d. Los enlaces que comienzan con S (start) se ejecutan al ingresar al nivel, y los que comienzan con K (kill) al salir del nivel.
Los servicios en SysVinit registran su actividad en diferentes archivos de registro. Los principales son:
/var/log/messages # Registro general del sistema
/var/log/secure # Registros de seguridad y autenticación
/var/log/cron # Registros del servicio crond
Para ver los registros en tiempo real de un servicio específico, puede usar:
tail -f /var/log/messages | grep servicio
Ejemplo para ver registros de crond:
tail -f /var/log/cron
Si recibe un mensaje como «servicio desconocido», verifique que el servicio esté instalado y que exista su guion de instrucciones en el directorio /etc/init.d:
ls /etc/init.d | grep srvejemplo
La gestión de servicios requiere privilegios de root. Si es usuario regular, utilice sudo:
sudo service crond status
sudo chkconfig crond on
Si un servicio no se detiene con service servicio stop, puede intentar forzar su terminación:
pkill -9 nombre-del-proceso
Precaución: Esta acción es drástica y debe usarse sólo cuando sea necesario.
Algunos servicios dependen de otros. Consulte la documentación del servicio o los comentarios en el guion de instrucciones /etc/init.d/srvejemplo.
La versión 3.15 de SysVinit representa una evolución significativa respecto a las versiones utilizadas históricamente en distribuciones como Fedora. Esta actualización incorpora mejoras sustanciales en seguridad, robustez e interoperabilidad, diseñadas para adaptar el sistema de inicialización tradicional a los entornos modernos de virtualización, contenedores y administración de servicios. Las siguientes secciones detallan las funcionalidades más relevantes para la administración de sistemas con ALDOS.
/etc/inittabEl archivo central de configuración ha recibido mejoras importantes para guiones de instrucciones de inicialización más complejos y seguros.
El límite de caracteres por línea en inittab se amplió significativamente. Además, se corrigió un comportamiento peligroso: en lugar de truncar silenciosamente las líneas demasiado largas ―lo que podía causar errores crípticos―, ahora el sistema rechaza la línea y registra una advertencia en los registros del sistema, proporcionando retroalimentación clara ante errores de configuración.
Se introdujo soporte para los operadores lógicos && (AND) y || (OR) dentro del campo de acción. Esta capacidad permite crear dependencias y lógica condicional simple directamente en inittab, haciendo los guiones de inicio más robustos.
Al prefijar el mandato con el símbolo @, éste se ejecuta directamente sin pasar por un intérprete de shell (/bin/sh). Esto proporciona mayor seguridad y eficiencia para mandatos que no requieren expansión de variables, globbing u otras características del shell, y evita problemas si el mandato contiene caracteres especiales.
/etc/inittab.dEl servicio init puede cargar configuración adicional desde archivos ubicados en el directorio /etc/inittab.d. Esta característica permite organizar la configuración de manera más limpia, similar a otros servicios modernos, siendo ideal para paquetes de equipamiento lógico que necesitan añadir sus propias entradas. Importante: los archivos en este directorio deben tener la extensión .tab para que el sistema los reconozca y procese automáticamente durante la inicialización.
SysVinit ahora interpreta señales específicas enviadas por el comando systemd-machined (machinectl stop) cuando se solicita detener un contenedor. Esta mejora permite una interacción correcta y un apagado ordenado cuando ALDOS se ejecuta como sistema operativo invitado dentro de un contenedor gestionado por un anfitrión con SystemD, siendo crucial para entornos de virtualización y contenedores modernos.
Se incluye un guion de instrucciones de conversión llamado sysd2v (/usr/bin/sysd2v) que permite generar esqueletos de guiones al estilo init.d a partir de archivos de unidad de systemd (.service). Esta herramienta facilita la migración de servicios o la coexistencia con sistemas que utilizan systemd, permitiendo reutilizar o adaptar configuraciones.
Varias utilidades han recibido actualizaciones que mejoran su robustez y funcionalidad:
pidof / killall5: Mejoras para manejar mejor enlaces simbólicos, omitir PIDs específicos de manera más confiable, y un nuevo modo silencioso (-q) que solo retorna un código de salida ―útil para guiones de instrucciones.bootlogd: Corrección de un bucle infinito al escribir en dispositivos fallidos y nueva opción -e para preservar códigos de escape (colores) en el registro de arranque (/var/log/boot), útil para revisarlo con less -R.reboot / halt: El mandato reboot ahora soporta la opción -m para pasar un mensaje al firmware del sistema durante el reinicio.En ALDOS, SysVinit se distribuye a través de una arquitectura modular de paquetes:
sysvinit: Binarios principales ubicados en /lib/sysvinitsysvinit-default: Enlaces simbólicos en /sbin para usar SysVinit como sistema predeterminadosysvinit-tools: Utilidades complementarias como insserv (gestión de dependencias) y startpar (ejecución paralela)Esta implementación permite que ALDOS utilice SysVinit 3.15 como sistema de inicialización moderno y mantenido.
Siga estos pasos para experimentar con las mejoras de SysVinit 3.15:
Probar el manejo de líneas largas: Intente añadir una línea deliberadamente extensa en /etc/inittab (puede ser un comentario). Reinicie init con telinit q y busque la advertencia en /var/log/messages.
Comprender el encadenamiento de mandatos en inittab: Imagine que tiene la siguiente línea en un archivo inittab:
tf:once:/bin/echo "Paso 1 OK" && /bin/echo "Paso 2 también OK" >> /tmp/log.txt
Esta línea ejecutaría los dos mandatos en secuencia, siempre que el primero tenga éxito (código de salida 0). Este tipo de encadenamiento es útil para crear dependencias simples en los guiones de inicio.
Configuración modular: Cree un archivo en el directorio /etc/inittab.d/eje1.tab con una entrada simple y segura, como iniciar un logger:
# Prueba de inittab.d
ml:respawn:@/usr/bin/logger -t INITTABD "Mensaje de prueba desde módulo"
Reinicie init con telinit q y verifique que el proceso esté en ejecución (ps aux | grep logger) y los mensajes en /var/log/messages.
SysVinit ofrece un sistema de gestión de servicios predecible y transparente, ideal para fines educativos y sistemas donde la simplicidad y el control directo son prioritarios. ALDOS, al utilizar SysVinit, mantiene esta tradición que facilita la comprensión de los fundamentos de la administración de servicios en Linux.
La versión 3.15 incorporada en ALDOS dista de ser un sistema de inicialización obsoleto. Las mejoras sustanciales que hemos revisado abordan necesidades modernas: seguridad reforzada (manejo seguro de errores, ejecución literal), mayor robustez en los guiones de instrucciones de inicio (encadenamiento lógico, líneas más largas) e interoperabilidad con infraestructuras contemporáneas (contenedores, systemd).
La práctica regular con los mandatos service y chkconfig proporciona una base sólida para administrar cualquier sistema basado en SysVinit, permitiendo una transición más sencilla a otros sistemas de inicialización cuando sea necesario.
man serviceman chkconfigman initman runlevelman inittab