LFCS Gestión de procesos y servicios de inicio del sistema (Sysvinit, Systemd y Upstart) - Parte 7

LFCS Gestión de procesos y servicios de inicio del sistema (Sysvinit, Systemd y Upstart) - Parte 7

Hace un par de meses, la Fundación Linux anunció la LFCS (Sysadmin certificado por la Fundación Linux) Certificación, un nuevo programa emocionante cuyo objetivo es permitir que las personas de todos los extremos del mundo se certifiquen en el desempeño de las tareas de administración de sistemas básicos a intermedios en sistemas Linux. Esto incluye admitir sistemas y servicios ya en ejecución, junto con la búsqueda de problemas y el análisis de primera mano, además de la capacidad de decidir cuándo plantear problemas a los equipos de ingeniería.

Sysadmin certificado por la Fundación Linux - Parte 7

El siguiente video describe una breve introducción al programa de certificación de la Fundación Linux.

Esta publicación es la parte 7 de una serie de 10 tutoriales, aquí en esta parte, explicaremos cómo administrar el proceso y los servicios de inicio del sistema Linux, que se requieren para el examen de certificación LFCS.

Administración del proceso de inicio de Linux

El proceso de arranque de un sistema Linux consta de varias fases, cada una representada por un componente diferente. El siguiente diagrama resume brevemente el proceso de arranque y muestra todos los componentes principales involucrados.

Proceso de arranque de Linux

Cuando presionas el Fuerza botón en su máquina, el firmware que se almacena en un Eeprom Chip en la placa base inicializa el CORREO (Poder en la auto prueba) para verificar el estado de los recursos de hardware del sistema. Cuando el CORREO está terminado, el firmware luego busca y carga el Primera etapa cargador de arranque, ubicado en el MBR o en el EFI Partición del primer disco disponible y le da control.

Método MBR

El MBR se encuentra en el primer sector del disco marcado como arranque en el Biografía configuración y es 512 bytes en tamaño.

  1. Primeros 446 bytes: El gestor de arranque contiene tanto el código ejecutable como el texto del mensaje de error.
  2. Siguientes 64 bytes: La tabla de partición contiene un registro para cada una de las cuatro particiones (primaria o extendida). Entre otras cosas, cada registro indica el estado (activo / no activo), el tamaño y los sectores de inicio / final de cada partición.
  3. Últimos 2 bytes: El número mágico sirve como una verificación de validación del MBR.

El siguiente comando realiza una copia de seguridad del MBR (en este ejemplo, /dev/sda es el primer disco duro). El archivo resultante, MBR.BKP puede ser útil si la tabla de partición se corrompe, por ejemplo, haciendo que el sistema no se pueda ser robable.

Por supuesto, para usarlo más tarde si surge la necesidad, necesitaremos guardarlo y almacenarlo en otro lugar (como un USB conducir, por ejemplo). Ese archivo nos ayudará a restaurar el MBR y nos llevará a seguir una vez más si y solo si no cambiamos el diseño del disco duro mientras tanto.

Copia de seguridad MBR
# dd if =/dev/sda of = mbr.BKP BS = 512 recuento = 1 
Copia de seguridad MBR en Linux
Restaurando MBR
# dd if = mbr.Bkp de =/dev/sda bs = 512 count = 1 
Restaurar MBR en Linux

Método EFI/UEFI

Para sistemas que usan el EFI/UEFI Método, el firmware de UEFI lee su configuración para determinar qué aplicación UEFI se lanzará y desde donde (i.mi., en el que se encuentra el disco y la partición de la partición EFI).

A continuación, el Segunda etapa Boot Loader (también conocido como Boot Manager) se carga y se ejecuta. COMIDA [Gran bota unificada] es el administrador de botas más utilizado en Linux. Una de las dos versiones distintas se puede encontrar en la mayoría de los sistemas utilizados hoy en día.

  1. Archivo de configuración de Legacy GRUB:/boot/grub/menú.LST (distribuciones más antiguas, no respaldadas por EFI/UEFI Firmwares).
  2. Archivo de configuración de Grub2: lo más probable,/etc/default/grub.

Aunque los objetivos del LFCS El examen no solicita explícitamente conocimiento sobre COMIDA INTRALES, si es valiente y puede permitirse estropear su sistema (es posible que desee probarlo primero en una máquina virtual, por si acaso), debe ejecutar.

# Actualizar-Grub 

Como raíz Después de modificar la configuración de Grub para aplicar los cambios.

Básicamente, COMIDA Carga el valor predeterminado núcleo y el initrd o initramfs imagen. En pocas palabras, InitRD o InitRAMFS ayudan a realizar la detección de hardware, la carga del módulo del núcleo y el descubrimiento del dispositivo necesario para montar el sistema de archivos raíz real en el sistema.

Una vez que el sistema de archivos raíz real está arriba, el kernel ejecuta el sistema y el administrador de servicios (en eso o system, cuya identificación del proceso o PID siempre es 1) para comenzar el proceso normal de arranque del espacio de usuario para presentar una interfaz de usuario.

Ambos en eso y system son demonios (procesos de fondo) que administran otros demonios, como el primer servicio que se inicia (durante el arranque) y el último servicio para terminar (durante el cierre).

Systemd e init

Servicios iniciales (Sysvinit)

El concepto de niveles en Linux especifica diferentes formas de usar un sistema controlando qué servicios están ejecutando. En otras palabras, un RunLevel controla qué tareas se pueden lograr en el estado de ejecución actual = RunLevel (y cuáles no).

Tradicionalmente, este proceso de inicio se realizó en base a convenciones que se originaron con Sistema V UNIX, con el sistema que pasa ejecutando colecciones de scripts que inician y detienen los servicios a medida que la máquina ingresó a un nivel ejecutivo específico (que, en otras palabras, es un modo diferente para ejecutar el sistema).

Dentro de cada RunLevel, se pueden configurar los servicios individuales para ejecutarse o que se cierren si se ejecuta. Las últimas versiones de algunas distribuciones importantes se están alejando de la Sistema V Estándar a favor de un Servicio y Administrador de sistemas bastante nuevo llamado system (que significa demonio del sistema), pero generalmente admite sysv Comandos para fines de compatibilidad. Esto significa que puedes ejecutar la mayor parte del conocido sysv Herramientas de inicio en una distribución basada en Systemd.

Leer también: Por qué 'systemd' reemplaza 'init' en Linux

Además de comenzar el proceso del sistema, en eso mira al /etc/inittab Archivo para decidir qué debe ingresarse RunLevel.

Renta Descripción
0  Detener el sistema. RunLevel 0 es un estado de transición especial utilizado para cerrar el sistema rápidamente.
1  También alias a S o S, este nivel de ejecución a veces se llama modo de mantenimiento. ¿Qué servicios, si los hay, se inician en este RunLevel, varía por distribución?. Por lo general, se usa para el mantenimiento del sistema de bajo nivel que puede verse afectado por la operación normal del sistema.
2  Multi usuario. En los sistemas y derivados de Debian, este es el RunLevel predeterminado e incluye -i disponible, un inicio de sesión gráfico. En los sistemas basados ​​en hat rojo, este es el modo multiusuario sin redes.
3  En los sistemas basados ​​en hat rojo, este es el modo multiuser predeterminado, que ejecuta todo excepto el entorno gráfico. Este RunLevel y los niveles 4 y 5 generalmente no se usan en los sistemas basados ​​en Debian.
4  Por lo general, no se usa de forma predeterminada y, por lo tanto, está disponible para la personalización.
5  En los sistemas basados ​​en hat rojo, modo multiusuario completo con inicio de sesión de GUI. Este RunLevel es como el Nivel 3, pero con una GUI de inicio de sesión disponible.
6  Reiniciar el sistema.

Para cambiar entre RunLevels, simplemente podemos emitir un cambio de RunLevel usando el en eso Comando: init norte (Donde n es uno de los niveles enumerados anteriormente). Tenga en cuenta que esta no es la forma recomendada de llevar un sistema en ejecución a un nivel de ejecución diferente porque no ofrece ninguna advertencia a los usuarios existentes de inicio de sesión (lo que hace que pierdan trabajo y procesos para terminar anormalmente).

En cambio, el cerrar El comando debe usarse para reiniciar el sistema (que primero envía un mensaje de advertencia a todos los usuarios registrados y bloquea cualquier inicio de sesión adicional; luego señala iniciar iniciar RunLevels); Sin embargo, el RunLevel predeterminado (al que se iniciará el sistema) debe editarse en el /etc/inittab primero.

Por esa razón, siga estos pasos para cambiar correctamente entre RunLevels, como raíz, busque la siguiente línea en /etc/inittab.

ID: 2: InitDefault: 

y cambiar el número 2 Para el RunLevel deseado con su editor de texto preferido, como VIM (descrito en cómo usar el editor VI/VIM en Linux - Parte 2 de esta serie).

A continuación, ejecute como root.

# apagado -r ahora 

Eso último El comando reiniciará el sistema, lo que hace que comience en el RunLevel especificado durante el siguiente arranque, y ejecutará los scripts ubicados en el /etc/rc [runlevel].d directorio para decidir qué servicios deben iniciarse y cuáles no deben. Por ejemplo, para RunLevel 2 en el siguiente sistema.

Cambiar RunLevels en Linux

Administrar servicios utilizando chkconfig

Para habilitar o deshabilitar los servicios del sistema en el arranque, utilizaremos el comando chkconfig en centos / openSuse y SYSV-RC-Conf en Debian y derivados. Esta herramienta también puede mostrarnos cuál es el estado preconfigurado de un servicio para un nivel de ejecución particular.

Leer también: Cómo detener y deshabilitar los servicios no deseados en Linux

Enumerar la configuración RunLevel para un servicio.

# chkconfig --list [nombre del servicio] # chkconfig --list postfix # chkconfig --list mysqld 
Listado de configuración de RunLevel

En la imagen de arriba podemos ver que sufijo está configurado para comenzar cuando el sistema ingresa a RunLevels 2 a través de 5, mientras mysqld se ejecutará de forma predeterminada para RunLevels 2 a través de 4. Ahora suponga que este no es el comportamiento esperado.

Por ejemplo, necesitamos encender mysqld para RunLevel 5 Además, y apague Postfix para RunLevels 4 y 5. Esto es lo que haríamos en cada caso (ejecute los siguientes comandos como root).

Habilitando un servicio para un RunLevel en particular
# chkconfig --level [nivel (s)] servicio en # chkconfig --level 5 mysqld on 
Desactivar un servicio para niveles de ejecución particulares
# chkconfig --level [nivel (s)] Servicio apagado # chkconfig --level 45 Postfix Off 
Habilitar los servicios de deshabilitar

Ahora realizaremos tareas similares en un Con sede en Debian sistema utilizando SYSV-RC-Conf.

Administrar servicios utilizando SYSV-RC-Conf

Configuración de un servicio para comenzar automáticamente en un RunLevel específico y evitar que comience en todos los demás.

1. Usemos el siguiente comando para ver cuáles son los runegels donde mada está configurado para comenzar.

# ls -l /etc /rc [0-6].D | GREP -E 'RC [0-6] | MDADM' 
Verifique que se ejecute RunLevel of Service

2. Usaremos SYSV-RC-Conf Para evitar que MDADM comience en todos los niveles de ejecución, excepto 2. Simplemente verifique o desmarque (con la barra espacial) como se desee (puede moverse hacia arriba, hacia abajo, la izquierda y la derecha con las teclas de flecha).

# SYSV-RC-Conf 
SYSV RunLevel Config

Entonces presione Q abandonar.

3. Reiniciaremos el sistema y ejecutaremos nuevamente el comando desde PASO 1.

# ls -l /etc /rc [0-6].D | GREP -E 'RC [0-6] | MDADM' 
Verificar el servicio RunLevel

En la imagen de arriba podemos ver que mada está configurado para comenzar solo en RunLevel 2.

¿Qué pasa con Systemd??

system es otro servicio y administrador del sistema que está siendo adoptado por varias distribuciones importantes de Linux. Su objetivo es permitir que se realice un mayor procesamiento en paralelo durante el inicio del sistema (a diferencia de sysvinit, Lo que siempre tiende a ser más lento porque inicia los procesos uno a la vez, verifica si uno depende de otro y espera a que demonios se inicie para que puedan comenzar más servicios) y servir como una gestión de recursos dinámicos para un sistema en ejecución.

Por lo tanto, los servicios se inician cuando es necesario (para evitar consumir los recursos del sistema) en lugar de ser lanzados sin una razón sólida durante el arranque.

Ver el estado de todos los procesos que se ejecutan en su sistema, ambos system nativo y Sysv Servicios, ejecute el siguiente comando.

# SystemCTL 
Verifique todos los procesos en ejecución

El CARGA La columna muestra si la definición de la unidad (consulte el UNIDAD columna, que muestra el servicio o cualquier cosa mantenida por Systemd) se cargó correctamente, mientras que el ACTIVO y SUB Las columnas muestran el estado actual de dicha unidad.

Mostrar información sobre el estado actual de un servicio

Cuando el ACTIVO La columna indica que el estado de una unidad es diferente al activo, podemos verificar lo que sucedió usando.

# Estado de SystemCTL [Unidad] 

Por ejemplo, en la imagen de arriba, samba de medios.montar está en estado fallido. Corramos.

# SystemCTL Status Media-Samba.montar 
Verifique el estado del servicio

Podemos ver eso samba de medios.montar falló porque el proceso de montaje en el host dev1 no pudo encontrar la parte compartida de la red en // 192.168.0.10/Gacanepa.

Iniciar o detener los servicios

Una vez que la red comparte // 192.168.0.10/Gacanepa está disponible, intentemos comenzar, luego parar y finalmente reiniciar la unidad samba de medios.montar. Después de realizar cada acción, ejecutemos SystemCTL Status Media-Samba.Monte para verificar su estado.

# SystemCTL Start Media-Samba.monte # systemctl status media-samba.monte # systemctl stop media-samba.monte # systemCtl reiniciar medios-samba.monte # systemctl status media-samba.montar 
Comenzar a detener los servicios
Habilitar o deshabilitar un servicio para comenzar durante el arranque

Bajo system Puede habilitar o deshabilitar un servicio cuando arranque.

# SystemCTL Habilitar [Servicio] # Habilitar un servicio # SystemCTL DISTABLE [Servicio] # Evite que un servicio comience en el arranque 

El proceso de habilitar o deshabilitar un servicio para comenzar automáticamente al arranque consiste en agregar o eliminar enlaces simbólicos en el /etc/systemd/system/múltiples usuarios.objetivo.quiere directorio.

Habilitar los servicios de desactivación

Alternativamente, puede encontrar el estado actual de un servicio (habilitado o deshabilitado) con el comando.

# SystemCTL IS-habilitado [Servicio] 

Por ejemplo,

# SystemCTL Postfix habilitado para IS.servicio 

Además, puede reiniciar o cerrar el sistema con.

# REBOOT SYSTEMCTL # SystemCTL SHUCEDOWN 

Advenedizo

Advenedizo es un reemplazo basado en eventos para el /sbin/init Daemon y nacieron de la necesidad de iniciar servicios solamente, cuando son necesarios (también supervisarlos mientras se ejecutan) y manejar los eventos a medida que ocurren, superando así el clásico sistema Sysvinit basado en la dependencia.

Se desarrolló originalmente para la distribución de Ubuntu, pero se usa en Red Hat Enterprise Linux 6.0. Aunque estaba destinado a ser adecuado para la implementación en todas las distribuciones de Linux como reemplazo para sysvinit, con el tiempo fue eclipsado por system. El 14 de febrero de 2014, Mark Shuttleworth (fundador de Canonical Ltd.) anunciaron que las versiones futuras de Ubuntu usarían Systemd como el demonio init predeterminado.

Porque el Sysv El script de inicio para el sistema ha sido tan común durante tanto tiempo que una gran cantidad de paquetes de software incluyen scripts de inicio de SYSV. Para acomodar dichos paquetes, Upstart proporciona un modo de compatibilidad: ejecuta scripts de inicio de SYSV en las ubicaciones habituales (/etc/rc.D/RC?.d, /etc/init.D/RC?.d, /etc/rc?.d, o una ubicación similar). Por lo tanto, si instalamos un paquete que aún no incluye un script de configuración en el adjunto, aún debe iniciarse de la manera habitual.

Además, si hemos instalado utilidades como Chkconfig, debería poder usarlos para administrar sus servicios basados ​​en SYSV tal como lo haríamos en Sysvinit Based Systems.

Los scripts upstart también admiten servicios de inicio o detenimiento basados ​​en una variedad más amplia de acciones que los scripts de inicio de SYSV; Por ejemplo, Upstart puede iniciar un servicio cada vez que se adjunte un dispositivo de hardware en particular.

Un sistema que utiliza advenedizas y sus scripts nativos reemplaza exclusivamente el /etc/inittab Archivo y el RunLevel específico Sysv Directorios de guiones de inicio con .confusión guiones en el /etc/init directorio.

Estos *.confusión Los scripts (también conocidos como definiciones de trabajo) generalmente consisten en lo siguiente:

    1. Descripción del proceso.
    2. Runegels donde el proceso debe ejecutarse o eventos que deben activarlo.
    3. RunLevels donde se deben detener el proceso o eventos que deberían detenerlo.
    4. Opción.
    5. Comando para iniciar el proceso.

Por ejemplo,

# Mi servicio de prueba - Descripción de la demostración de script en el inicio "Aquí va la descripción de 'My Test Service'" Autor "Dave Null <[email protected]>" # Estrofas # # estrofas definen cuándo y cómo se inicia y se detiene un proceso # Consulte una lista de estrofas aquí: http: //.ubuntu.com/wiki/stanza # repaño # Cuando para comenzar el servicio comenzar en runlevel [2345] # Cuando detener la parada del servicio en runlevel [016] # reiniciar automáticamente el proceso en caso de frasco respaldo # Especificar directorio de trabajo chdir/home/dave/dave/ myFiles # especifique el proceso/comando (agregue argumentos si es necesario) para ejecutar la copia de seguridad de BASH EXEC.sh arg1 arg2 

Para aplicar cambios, deberá decirle a UpRart que recargue su configuración.

# InitCTL Recargación Configuración 

Luego comience su trabajo escribiendo el siguiente comando.

$ sudo start yourJobname 

Dónde Tu nombre de Jobname es el nombre del trabajo que se agregó anteriormente con el Tu nombre de Jobname.confusión guion.

Una guía de referencia más completa y detallada para el advenedizo está disponible en el sitio web del proyecto en el menú "Libro de cocina".

Resumen

Es necesario un conocimiento del proceso de arranque de Linux para ayudarlo con las tareas de solución de problemas, así como con la adaptación del rendimiento de la computadora y la ejecución de servicios a sus necesidades.

En este artículo hemos analizado lo que sucede desde el momento en que presiona el Fuerza Cambie para encender la máquina hasta que obtenga una interfaz de usuario totalmente operativa. Espero que hayas aprendido leerlo tanto como lo hice mientras lo juntaba. No dude en dejar sus comentarios o preguntas a continuación. Siempre esperamos tener noticias de nuestros lectores!

Convertirse en administrador del sistema certificado por Linux