Linux – Niveles de ejecución y Servicios

SysV Init Runlevels

El sistema de niveles de ejecución SysV init provee un proceso estándar para controlar cuáles programas init lanza o detiene cuando se inicializa un nivel de ejecución. SysV init fué escogido porque es más fácil de usar y más flexible que el proceso init estilo-BSD tradicional.

Los archivos de configuración para SysV init están en el directorio /etc/rc.d/

Dentro se encuentran los scripts:

  • rc
  • rc.local
  • rc.sysinit
  • rc.serial (opcional)

También se encuentran los siguientes directorios:

init.d/ rc0.d/ rc1.d/ rc2.d/ rc3.d/ rc4.d/ rc5.d/ rc6.d/

El directorio init.d/ contiene los scripts usados ​​por el comando /sbin/init utilizados para controlar los servicios. Cada uno de los directorios numerados representan los seis niveles de ejecución configurados por defecto bajo Red Hat Enterprise Linux.

Runlevels

La idea detrás de los niveles de ejecución SysV init gira alrededor del concepto de que diferentes sistemas se pueden utilizar de diferentes maneras.

Por ejemplo:

  • Un servidor corre de forma más eficiente sin el consumo de recursos del sistema absorbidos por «X Window System».
  • En ocasiones un sysadmin puede necesitar operar el sistema en un nivel inferior, esto para realizar tareas de diagnóstico, como solucionar daños en el nivel de ejecución 1, en el disco .

Las características de un nivel de ejecución dado determinan qué servicios son detenidos o iniciados por init. Por ejemplo:

  • El nivel de ejecución 1 (single user mode) detiene cualquier servicio de red.
  • Mientras que el nivel 3 arranca estos servicios de red.

Al detener e iniciar diferentes servicios en diversos niveles dado, permite que con init se pueda cambiar de manera fácil el modo de la máquina, sin que el usuario deba arrancar o detener servicios de manera manual.

Por defecto, en Red Hat Enterprise Linux se encuentran definidos los siguientes niveles de ejecución:

0 — Halt

1 — Single-user text mode

2 — Not used (user-definable)

3 — Full multi-user text mode

4 — Not used (user-definable)

5 — Full multi-user graphical mode (with an X-based login screen)

6 — Reboot

En general, usuarios operan Red Hat Enterprise Linux en el nivel de ejecución 3 o en el nivel de ejecución 5. Ambos modos son multi-usuarios. Los usuarios a veces personalizan los niveles de ejecución 2 y 4 para satisfacer necesidades específicas, ya que no se utilizan.

Para conocer el nivel de ejecución por defecto del sistema, busque por la línea similar a la siguiente en la parte superior de

cat /etc/inittab

id: 5: initdefault:

El nivel de ejecución predeterminado en este ejemplo es 5, como lo indica el número después de los primeros dos puntos. Para cambiarlo, se puede modificar /etc/inittab como usuario root.

Advertencia

Hay que tener mucho cuidado cuando se modifica /etc/inittab. Errores muy simples pueden hacer que el sistema deje de arrancar. Si esto ocurre, hay que moverse, por ejemplo, para usar un disquete de arranque, seguidamente entrar en modo de usuario único o entrar en modo de rescate para iniciar el equipo y reparar el archivo.

Por favor consulte:

Imprimir nivel de ejecución actual

who -r

Archivo de configuración del nivel de ejecución

cat /etc/inittab
grep "^id:" /etc/inittab

Verficando el estado de un servicio

Con el parametro «–list» se pueden listar todos los servicios y su actual estado «start-up» en cada configuración de nivel de ejecución (run-level configuration).

chkconfig --list | egrep 'apache|http'

httpd      0:off  1:off  2:on   3:on   4:on   5:on   6:off

Iniciar un servicio en sus niveles de ejecución

chkconfig --level 35 httpd on
chkconfig --list | grep httpd

httpd      0:off 1:off 2:off 3:on 4:off 5:on 6:off

Verificar si un servicio se encuentra encendido

chkconfig rsync

rsync on
chkconfig --list | egrep 'network.*:on'

networking      0:on   1:off  2:off  3:off  4:off  5:off  6:off

Servicios encendidos

chkconfig --list | egrep '(3|5):on'
chkconfig --list | grep '0:on'
chkconfig --list | egrep '[1-6]:on'
chkconfig --list | grep ':on'

Servicios apagados

chkconfig --list | egrep '(3|5):off'
chkconfig --list | grep ':off'

Apagar un servicio en un cierto nivel de ejecución

chkconfig --level 2335 httpd off

Lista de programas escuchando y los puertos que usan

netstat -plnt

En Ubuntu es más simple

service --status-all | grep '?'
service --status-all | grep '+'
service --status-all | grep '-'

Por ejemplo, para verificar el estado de un servicio se puede usar:

service cron status
service networking status
service ssh status
service rsync status
service sudo status
service mysql status
service apache2 status
service monit status
service fail2ban status
service ufw status

¿Dónde está la configuración de los niveles de ejecución?

  • /etc/init es donde viven los archivos de configuración de upstart. Si bien no son scripts en si, en esencia ejecutan lo que sea necesario para reemplazar los scripts sysvinit.
    ls /etc/init
  • /etc/init.d es donde viven todos los scripts sysvinit tradicionales y los scripts compatibles con versiones anteriores de upstart. Los comandos compatibles con versiones anteriores, básicamente se ponen a funcionar usando: service SERVICIO start, Algunos sólo muestran un aviso para que se utilice el comando «service».
    ls /etc/init.d
  • /etc/init/rc-sysinit.conf se controla la ejecución de los scripts agregados manualmente o con update-rc.d hacia niveles de ejecución tradicionales en /etc/rc*

    cat /etc/init/rc-sysinit.conf

    Instalar y quitar enlaces de scripts estilo System-V

    update-rc.d actualiza los enlaces de los scripts estilo System V «/etc/rc{[0-9S]}.d/NN{Name}» cuyo objetivo es el script «/etc/init.d/name«. Estos enlaces son dirigidos por init cuando se cambian los niveles de ejecución, en general se utiliza para iniciar y detener servicios del sistema como demonios. El nivel de ejecución es uno de los niveles de ejecución soportados por init, a saber, {[0-9S]} y NN es el número de secuencia de dos dígitos que determina el lugar de la secuencia donde init ejecutará los scripts.

    man update-rc.d
  • /etc/default tiene archivos de configuración que le permiten controlar el comportamiento de los scripts sysvinit tradicionales y los nuevos scripts upstart.
    ls /etc/default
ls -ld /etc/init.d/rc*

-rwxr-xr-x 1 root root 8635 jul 26  2012 /etc/init.d/rc
-rwxr-xr-x 1 root root  801 jul 26  2012 /etc/init.d/rc.local
-rwxr-xr-x 1 root root  117 jul 26  2012 /etc/init.d/rcS
ls -d /etc/init.d/rc* | xargs file

/etc/init.d/rc:       POSIX shell script, ASCII text executable
/etc/init.d/rc.local: POSIX shell script, ASCII text executable
/etc/init.d/rcS:      POSIX shell script, ASCII text executable
ls -d /etc/rc*.d

/etc/rc0.d  /etc/rc1.d  /etc/rc2.d  /etc/rc3.d  /etc/rc4.d  /etc/rc5.d  /etc/rc6.d  /etc/rcS.d
ls -ld /etc/rc*.d

drwxr-xr-x 2 root root 4096 ago  4 11:51 /etc/rc0.d
drwxr-xr-x 2 root root 4096 ago  4 11:51 /etc/rc1.d
drwxr-xr-x 2 root root 4096 ago  4 11:51 /etc/rc2.d
drwxr-xr-x 2 root root 4096 ago  4 11:51 /etc/rc3.d
drwxr-xr-x 2 root root 4096 ago  4 11:51 /etc/rc4.d
drwxr-xr-x 2 root root 4096 ago  4 11:51 /etc/rc5.d
drwxr-xr-x 2 root root 4096 ago  4 11:51 /etc/rc6.d
drwxr-xr-x 2 root root 4096 may  8 19:07 /etc/rcS.d
find /etc/ -maxdepth 1 -name 'rc[0-5].d' | sort

/etc/rc0.d
/etc/rc1.d
/etc/rc2.d
/etc/rc3.d
/etc/rc4.d
/etc/rc5.d
find /etc/ -maxdepth 1 -name 'rc*' | sort

/etc/rc0.d
/etc/rc1.d
/etc/rc2.d
/etc/rc3.d
/etc/rc4.d
/etc/rc5.d
/etc/rc6.d
/etc/rc.local
/etc/rcS.d
find /etc/ -maxdepth 1 -name 'rc*' | sort | xargs file

/etc/rc0.d:    directory
/etc/rc1.d:    directory
/etc/rc2.d:    directory
/etc/rc3.d:    directory
/etc/rc4.d:    directory
/etc/rc5.d:    directory
/etc/rc6.d:    directory
/etc/rc.local: POSIX shell script, ASCII text executable
/etc/rcS.d:    directory

Por favor consulte:

Deja un comentario