Gestión de procesos de la serie RHCSA en el arranque Rhel 7, el cierre y todo lo intermedio en la Parte 5

Gestión de procesos de la serie RHCSA en el arranque Rhel 7, el cierre y todo lo intermedio en la Parte 5

Comenzaremos este artículo con una revisión general y breve de lo que sucede desde el momento en que presione el Fuerza botón para encender tu Rhel 7 servidor hasta que se le presente la pantalla de inicio de sesión en una interfaz de línea de comandos.

Proceso de arranque de Linux

Tenga en cuenta que:

1. Se aplican los mismos principios básicos, con modificaciones quizás menores, a otras distribuciones de Linux, y
2. La siguiente descripción no está destinada a representar una explicación exhaustiva del proceso de arranque, sino solo los fundamentos.

Proceso de arranque de Linux

1. El CORREO (Power en la auto prueba) Inicializa y realiza comprobaciones de hardware.

2. Cuando el CORREO Finalizados, el control del sistema se pasa al cargador de arranque de la primera etapa, que se almacena en el sector de arranque de uno de los discos duros (para sistemas más antiguos usando BIOS y MBR), o una partición EFI dedicada (U).

3. El cargador de arranque del primer escenario luego carga el cargador de arranque de la segunda etapa, más generalmente COMIDA (Gran cargador de arranque unificado), que reside dentro /bota, que a su vez carga el kernel y el sistema inicial de archivos basado en RAM (también conocido como initramfs, que contiene programas y archivos binarios que realizan las acciones necesarias necesarias para montar en última instancia el sistema de archivos raíz real).

4. Se nos presenta una pantalla de salpicaduras que nos permite elegir un sistema operativo y un kernel para arrancar:

Pantalla de menú de arranque

5. El kernel establece el hardware conectado al sistema y una vez que se ha montado el sistema de archivos raíz, inicia el proceso con Pid 1, que a su vez inicializará otros procesos y nos presentará un mensaje de inicio de sesión.

Nota: Que si deseamos hacerlo en un momento posterior, podemos examinar los detalles de este proceso utilizando el comando dmesg y filtrar su salida utilizando las herramientas que hemos explicado en artículos anteriores de esta serie.

Pantalla de inicio de sesión y procesar PID

En el ejemplo anterior, utilizamos el conocido comando PS Para mostrar una lista de procesos actuales cuyo proceso principal (o en otras palabras, el proceso que los inició) es system (El administrador del sistema y el servicio a los que la mayoría de las distribuciones modernas de Linux han cambiado) durante el inicio del sistema:

# PS -O PPID, PID, Uname, Comm --ppid = 1 

Recuerda que el -O bandera (abreviatura -formato) le permite presentar la salida de PD en un formato personalizado para satisfacer sus necesidades utilizando las palabras clave especificadas en el Especificadores de formato estándar sección de hombre ps.

Otro caso en el que querrá definir la salida de PD En lugar de ir con el valor predeterminado es cuándo necesita encontrar procesos que estén causando una CPU significativa y / o una carga de memoria, y ordenarlos en consecuencia:

# ps aux --sort =+pcpu # sort by %cpu (ascending) # ps aux --sort = -pcpu # sort por %cpu (descendente) # ps aux --sort =+pmem # sort by %mem (ascendente ) # ps aux --sort = -pmem # sort by %mem (descendente) # ps aux --sort =+pcpu, -pmem # combina sort por %cpu (ascendente) y %mem (descendente) 
Personalizar la salida del comando PS

Una introducción a Systemd

Pocas decisiones en el mundo de Linux han causado más controversias que la adopción de system por mayores distribuciones de Linux. El nombre de los defensores de Systemd como sus principales ventajas los siguientes hechos:

Leer también: La historia detrás de 'init' y 'systemd'

1. Systemd permite que se realice un mayor procesamiento en paralelo durante el inicio del sistema (a diferencia de los mayores Sysvinit, que siempre tiende a ser más lento porque inicia los procesos uno por uno, verifica si uno depende de otro y luego espera a que demonios se inicie para que sean más servicios), y

2. Funciona como una gestión de recursos dinámicos en un sistema en ejecución. Por lo tanto, los servicios se inician cuando es necesario (para evitar consumir recursos del sistema si no se están utilizando) en lugar de ser lanzados sin una razón válida durante el arranque.

3. Compatibilidad con versiones anteriores con Sysvinit guiones.

System está controlado por el systemctl utilidad. Si vienes de un Sysvinit Antecedentes, es probable que esté familiarizado con:

  1. el servicio La herramienta, que, en esos sistemas más antiguos, se utilizó para administrar scripts sysvinit, y
  2. La utilidad de Chkconfig, que tenía el propósito de actualizar y consultar la información de RunLevel para los servicios del sistema.
  3. cerrar, que debe haber usado varias veces para reiniciar o detener un sistema en ejecución.

La siguiente tabla muestra las similitudes entre el uso de estas herramientas heredadas y systemctl:

Herramienta heredada SystemCTL equivalente Descripción
Inicio del nombre del servicio Nombre de inicio de SystemCTL Nombre de inicio (donde el nombre es un servicio)
Nombre del servicio Stop Nombre de parada de SystemCTL Nombre de parada
Nombre del servicio Condrestart nombre de systemctl try-rescart Reinicia el nombre (si ya se está ejecutando)
reiniciar el nombre del servicio Nombre de reinicio de SystemCTL Reinicia el nombre
Recargar el nombre del servicio Nombre de recarga de SystemCTL Recarga la configuración para el nombre
Estado del nombre del servicio Nombre de estado de SystemCTL Muestra el estado actual de nombre
servicio -tatus -all systemctl Muestra el estado de todos los servicios actuales
nombre de chkconfig en SystemCTL Habilitar el nombre Habilitar el nombre para ejecutarse en el inicio como se especifica en el archivo de la unidad (el archivo al que apunta el enlace simbólico). El proceso de habilitar o deshabilitar un servicio para comenzar automáticamente en el arranque consiste en agregar o eliminar enlaces simbólicos dentro del directorio/etc/systemd/sistema.
nombre de chkconfig apagado SystemCTL Nombre de desactivación Desactiva el nombre para ejecutarse en el inicio como se especifica en el archivo de la unidad (el archivo al que apunta el enlace simbólico)
Nombre de la lista de chkconfig Nombre habilitado para SystemCTL IS Verifique si el nombre (un servicio específico) está actualmente habilitado
chkconfig -lista SystemCTL -Type = Servicio Muestra todos los servicios y dice si están habilitados o deshabilitados
apagado -h ahora SystemCTL PowerOff Aperando la máquina (detener)
apagado -r ahora reiniciar SystemCTL Reiniciar el sistema

System También introdujo los conceptos de unidades (que pueden ser un servicio, un punto de montaje, un dispositivo o un enchufe de red) y objetivos (que es cómo Systemd logra iniciar varios procesos relacionados al mismo tiempo, y puede considerarse: aunque no igual, como el equivalente de los niveles de ejecución en Con sede en sysvinit sistemas.

Resumiendo

Otras tareas relacionadas con la gestión de procesos incluyen, pero pueden no estar limitadas a la capacidad de:

1. Ajuste la prioridad de ejecución en lo que respecta al uso de los recursos del sistema que se refiere a un proceso:

Esto se logra a través del re bueno Utilidad, que altera la prioridad de programación de uno o más procesos de ejecución. En términos simples, la prioridad de programación es una característica que permite el núcleo (presente en las versiones => 2.6) para asignar recursos del sistema según la prioridad de ejecución asignada (también conocido como la amabilidad, en un rango de -20 a través de 19) de un proceso dado.

La sintaxis básica de re bueno es como sigue:

# identificador de prioridad [-gpu] prioridad 

En el comando genérico anterior, el primer argumento es el valor de prioridad a utilizar, mientras que el otro argumento puede interpretarse como proceso IDS (cuál es la configuración predeterminada), ID de grupo de procesos, ID de usuario o nombres de usuario. Un usuario normal (que no sea root) solo puede modificar la prioridad de programación de un proceso que posee, y solo aumenta el nivel de amabilidad (lo que significa tomar menos recursos del sistema).

Prioridad de programación de procesos
2. Matar (o interrumpir la ejecución normal) de un proceso según sea necesario:

En términos más precisos, matar un proceso tiene derecho a enviarle una señal para terminar su ejecución con gracia (Sigterm = 15) o inmediatamente (Sigkill = 9) a través de los comandos Kill o Pkill.

La diferencia entre estas dos herramientas es que la primera se usa para terminar un proceso específico o un grupo de proceso por completo, mientras que el segundo le permite hacer lo mismo según el nombre y otros atributos.

Además, pkill viene incluido con pgrep, que muestra los PID que se verán afectados si se usa Pkill. Por ejemplo, antes de ejecutar:

# pkill -u gacanepa 

Puede ser útil ver de un vistazo que son los Pids propiedad de gacanepa:

# PGREP -L -U GACANEPA 
Encontrar pids de usuario

Por defecto, ambos matar y pkill envía el Siglo señal al proceso. Como mencionamos anteriormente, esta señal se puede ignorar (mientras el proceso termina su ejecución o para siempre), por lo que cuando necesite seriamente detener un proceso de ejecución con una razón válida, deberá especificar el Sigkill señal en la línea de comando:

# Kill -9 Identificador # Kill a un proceso o un grupo de proceso # Kill -S Identificador de señal # idem # pkill -s identificador de señal # matar un proceso por nombre u otros atributos 

Conclusión

En este artículo hemos explicado los conceptos básicos del proceso de arranque en un Rhel 7 sistema, y ​​analizó algunas de las herramientas disponibles para ayudarlo a administrar procesos utilizando utilidades comunes y comandos específicos de Systemd.

Tenga en cuenta que esta lista no está destinada a cubrir todas las campanas y silbatos de este tema, así que no dude en agregar sus propias herramientas y comandos preferidos a este artículo utilizando el formulario de comentarios a continuación. Las preguntas y otros comentarios también son bienvenidos.