Table of Contents
Serie RHCSA: Gestión de procesos en RHEL 7: Arranque, apagado y todo lo demás-Parte 5
Comenzaremos este artículo con una revisión general y breve de lo que sucede desde el momento en que presiona el botón Encendido. para encender su servidor RHEL 7. hasta que se le presenta con 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.. Los mismos principios básicos se aplican, quizás con modificaciones menores, a otras distribuciones de Linux también, y 2.. la siguiente descripción no pretende representar una descripción exhaustiva explicación del proceso de arranque, pero solo los fundamentos.
Proceso de arranque de Linux
1.. El POST. (Power On Self Test) inicializa y realiza comprobaciones de hardware.
2.. Cuando finaliza la POST. el control del sistema pasa al cargador de arranque de la primera etapa, que es almacenado en el segundo de arranque tor de uno de los discos duros (para sistemas más antiguos que usan BIOS y MBR), o una partición EFI dedicada (U).
freestar.config.enabled_slots.push (LocationName: “tecmint_incontent”, slotId: “tecmint_incontent” );
3.. El cargador de arranque de la primera etapa carga el cargador de arranque de la segunda etapa, generalmente GRUB. ( GRand Unified Boot Loader. ), que reside dentro de /boot. que a su vez carga el kernel y el sistema de archivos inicial basado en RAM (también conocido como initramfs. que contiene programas y archivos binarios que funcionan las acciones necesarias para finalmente montar el sistema de archivos raíz real).
4.. Se nos presenta una pantalla de bienvenida que nos permite elegir un sistema operativo y kernel para arrancar:
Pantalla del menú de inicio
5.. El kernel configura el hardware conectado al sistema y una vez que el sistema de archivos raíz ha montado, 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 usando el comando dmesg y filtrando su salida usando las herramientas que hemos explicado en artículos anteriores de esta serie.
Pantalla de inicio de sesión y PID de proceso
En el ejemplo anterior, usamos el conocido comando ps. para mostrar una lista de procesos actuales cuyo proceso padre (o en otras palabras, el proceso que los inició) es systemd. (el administrador de sistemas y servicios al que se han cambiado la mayoría de las distribuciones modernas de Linux) durante el inicio del sistema:
# ps-o ppid, pid, uname, comm–ppid = 1
Recuerde que el -o. flag (abreviatura de –format. le permite presentar la salida de ps. en un formato personalizado para satisfacer sus necesidades utilizando las palabras clave especificadas en la sección ESPECIFICADORES DE FORMATO ESTÁNDAR. en man ps.
Otro caso en el que querrá definir la salida de ps. en lugar de seguir con el valor predeterminado es cuando necesita encontrar procesos que están causando una carga significativa de CPU y/o memoria, y ordenarlos en consecuencia:
# ps aux–sort = + pcpu # Ordenar por% CPU (ascendente ) # ps aux–sort =-pcpu # Ordenar por% CPU (descendente) # ps aux–sort = + pmem # Ordenar por% MEM (ascendente) # ps aux–sort =-pmem # Ordenar por% MEM (descendente) # ps aux–sort = + pcpu,-pmem # Combina ordenar por% CPU (ascendente) y% MEM (descendente)
Personalizar la salida del comando ps
Introducción a SystemD
Pocas decisiones en el mundo de Linux han causó más controversias que la adopción de systemd. por las principales distribuciones de Linux. Los defensores de Systemd nombran como sus principales ventajas los siguientes hechos:
Lea también:. La historia detrás de ‘init’ y ‘systemd’
1.. Systemd permite que se realicen más procesamientos en paralelo durante el inicio del sistema (a diferencia del antiguo 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 se inicien los demonios para que puedan iniciarse más servicios), y
2.. Funciona como una gestión dinámica de recursos en un sistema en ejecución. Por lo tanto, los servicios se inician cuando se necesitan (para evitar consumir recursos del sistema si no se están utilizando) en lugar de iniciarse sin una razón válida durante el arranque.
3.. Compatibilidad con versiones anteriores Secuencias de comandos SysVinit.
Systemd. está controlado por la utilidad systemctl. Si viene de un entorno SysVinit. es probable que esté familiarizado con:
- la herramienta service. que-en aquellos sistemas más antiguos-se usaba para administrar los scripts de SysVinit, y
- la utilidad chkconfig, que servía a la propósito de actualizar y consultar información de nivel de ejecución para servicios del sistema.
- apagado. 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 equivalente de Systemctl Descripción nombre del servicio start systemctl nombre de inicio Nombre de inicio (donde el nombre es un servicio) nombre del servicio stop systemctl stop name Nombre de detención nombre del servicio condrestart systemctl try-restart name Reinicia el nombre (si ya se está ejecutando) service name restart systemctl reiniciar nombre Reinicia el nombre del servicio nombre reload systemctl reload name Vuelve a cargar la configuración para el nombre del servicio name status systemctl status name Muestra el estado actual de name service –status-all systemctl Muestra el estado de todos los servicios actuales chkconfig name en systemctl enable name Habilita el nombre para que se ejecute al inicio como se especifica en el archivo de unidad (el archivo al que apunta el enlace simbólico). El proceso de habilitar o deshabilitar un servicio para que se inicie automáticamente al arrancar consiste en agregar o eliminar enlaces simbólicos dentro del directorio/etc/systemd/system. chkconfig name off systemctl disable name Desactiva el nombre para que se ejecute en el inicio como se especifica en el archivo de unidad (el archivo al que apunta el enlace simbólico) chkconfig –list name systemctl is-enabled name Verifique si el nombre (un servicio específico) está actualmente habilitado chkconfig –list systemctl –type = service Muestra todos los servicios e indica si están habilitados o deshabilitados apagar-h ahora systemctl poweroff Apagar la máquina (detener) apagar-r ahora systemctl reboot Reiniciar el sistema
Systemd. también introdujo los conceptos de unidades (que pueden ser un servicio, un punto de montaje, un dispositivo o un conector de red) y objetivos (que es la forma en que systemd logra iniciar varios procesos relacionados al mismo tiempo, y se puede considerar, aunque no es igual, como el equivalente de los niveles de ejecución en los sistemas basados en SysVinit.
Resumiendo
Otras tareas relacionadas con la gestión de procesos incluyen, entre otras, para, la capacidad de:
1. Ajustar la prioridad de ejecución en lo que respecta al uso de los recursos del sistema de un proceso:
Esto se logra mediante la utilidad renice. que altera la prioridad de programación de uno o más procesos en ejecución. En términos simples, la prioridad de programación es una característica que permite al kernel (presente en las versiones => 2.6. asignar recursos del sistema según la prioridad de ejecución asignada (también conocida como amabilidad, en un rango de -20. a 19. de un proceso determinado.
La sintaxis básica de renice. es la siguiente:
# renice [-n] prioridad [-gpu] identificador
En el comando genérico anterior, el primer argumento es el valor de prioridad que se utilizará, mientras que el otro argumento se puede interpretar como ID. de proceso (que es la configuración predeterminada), identificaciones de grupos de procesos, identificaciones de usuario o nombres de usuario. Un usuario normal (que no sea root) solo puede modificar la prioridad de programación de un proceso de su propiedad y solo aumentar el nivel de bondad (lo que significa consumir menos recursos del sistema).
Prioridad de programación de procesos 2. Elimine (o interrumpa la ejecución normal) de un proceso según sea necesario:
En términos más precisos, matar un proceso autoriza a enviarle una señal para finalizar su ejecución con elegancia ( 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 utiliza para finalizar un proceso específico o un grupo de procesos por completo, mientras que la segunda le permite hacer lo mismo en función del nombre y otros atributos.
Además, pkill. viene incluido con pgrep. que muestra los PID que se verán afectados si se utiliza pkill. Por ejemplo, antes de ejecutar:
# pkill-u gacanepa
Puede resultar útil ver de un vistazo cuáles son los PID. propiedad de gacanepa.
# pgrep-l-u gacanepa
Buscar PID de usuario
De forma predeterminada, ambos kill. y pkill. envían la señal SIGTERM. al proceso. Como mencionamos anteriormente, esta señal se puede ignorar (mientras el proceso finaliza su ejecución o para siempre), por lo que cuando realmente necesite detener un proceso en ejecución con una razón válida, deberá especificar el SIGKILL. señal en la línea de comando:
# kill-9 identificador # Mata un proceso o un grupo de procesos # kill-s identificador de SEÑAL # Idem # pkill-s identificador de SEÑAL # Mata 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 sistema RHEL 7. y analizado algunas de las herramientas que están disponibles para ayudarlo con la administración de procesos usando utilidades comunes y comandos específicos de systemd.
Tenga en cuenta que esta lista no pretende cubrir todos los detalles de este tema, así que siéntase libre de 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.