LFCS monitorea los procesos de Linux Uso de recursos y establece límites de proceso por usuario - Parte 14

LFCS monitorea los procesos de Linux Uso de recursos y establece límites de proceso por usuario - Parte 14

Debido a modificaciones recientes en los objetivos del examen de certificación LFCS efectivos desde 2 de febrero de 2016, Estamos agregando los artículos necesarios a la serie LFCS publicada aquí. Para prepararse para este examen, se le recomienda encarecidamente que también pase por la serie LFCE.

Monitorear los procesos de Linux y establecer límites de proceso por usuario - Parte 14

Cada administrador del sistema de Linux necesita saber cómo verificar la integridad y la disponibilidad de hardware, recursos y procesos clave. Además, establecer límites de recursos por usuario también debe ser parte de su conjunto de habilidades.

En este artículo exploraremos algunas formas de garantizar que el sistema tanto hardware como el software se comporten correctamente para evitar posibles problemas que pueden causar tiempo de inactividad de producción inesperado y pérdida de dinero.

Estadísticas de procesadores de informes de Linux

Con mpstat Puede ver las actividades para cada procesador individualmente o el sistema en su conjunto, tanto como una instantánea única o dinámicamente.

Para usar esta herramienta, deberá instalar sysstat:

# Yum Update && Yum Install SysStat [ON Cento sistemas basados] # aptitutde update && aptitude install sysstat [en Ubuntu Sistemas basados] # Zypper Update && Zypper Install SysStat [ON usura de apertura sistemas] 

Leer más sobre sysstat Y son utilidades en Learn Sysstat y sus utilidades MPStat, Pidstat, Iostat y SAR en Linux

Una vez que haya instalado mpstat, Úselo para generar informes de estadísticas de procesadores.

Para mostrar 3 Informes globales de utilización de CPU (-u) para todas las CPU (como lo indica -PAG Todos) en un intervalo de 2 segundos, haz:

# mpstat -p all -u 2 3 
Salida de muestra
Linux 3.19.0-32 Genérico (Tecmint.com) miércoles 30 de marzo de 2016 _x86_64_ (4 CPU) 11:41:07 IST CPU %USR %NICE %SYS %IOWAIT %IRQ %Soft %Stoal %invitado %Gnice Idlea 11:41:09 Ist 5.85 0.00 1.12 0.12 0.00 0.00 0.00 0.00 0.00 92.91 11:41:09 ist 0 4.48 0.00 1.00 0.00 0.00 0.00 0.00 0.00 0.00 94.53 11:41:09 ist 1 2.50 0.00 0.50 0.00 0.00 0.00 0.00 0.00 0.00 97.00 11:41:09 ist 2 6.44 0.00 0.99 0.00 0.00 0.00 0.00 0.00 0.00 92.57 11:41:09 ist 3 10.45 0.00 1.99 0.00 0.00 0.00 0.00 0.00 0.00 87.56 11:41:09 IST CPU %USR %NICE %SYS %IOWAIT %IRQ %SOFT %STAAL %Guest %Gnice %Idle 11:41:11 ist todos los 11.60 0.12 1.12 0.50 0.00 0.00 0.00 0.00 0.00 86.66 11:41:11 ist 0 10.50 0.00 1.00 0.00 0.00 0.00 0.00 0.00 0.00 88.50 11:41:11 ist 1 14.36 0.00 1.49 2.48 0.00 0.00 0.00 0.00 0.00 81.68 11:41:11 ist 2 2.00 0.50 1.00 0.00 0.00 0.00 0.00 0.00 0.00 96.50 11:41:11 ist 3 19.40 0.00 1.00 0.00 0.00 0.00 0.00 0.00 0.00 79.60 11:41:11 IST CPU %USR %NICE %SYS %IOWAIT %IRQ %SOFT %STAAL %Huésped %Gnice %Idle 11:41:13 ist los 5.69 0.00 1.24 0.00 0.00 0.00 0.00 0.00 0.00 93.07 11:41:13 ist 0 2.97 0.00 1.49 0.00 0.00 0.00 0.00 0.00 0.00 95.54 11:41:13 ist 1 10.78 0.00 1.47 0.00 0.00 0.00 0.00 0.00 0.00 87.75 11:41:13 ist 2 2.00 0.00 1.00 0.00 0.00 0.00 0.00 0.00 0.00 97.00 11:41:13 ist 3 6.93 0.00 0.50 0.00 0.00 0.00 0.00 0.00 0.00 92.57 Promedio: CPU %USR %NICE %SYS %IOWAIT %IRQ %SOFT %STAAL %GNICE %GNICE Promedio inactivo: los 7.71 0.04 1.16 0.21 0.00 0.00 0.00 0.00 0.00 90.89 Promedio: 0 5.97 0.00 1.16 0.00 0.00 0.00 0.00 0.00 0.00 92.87 Promedio: 1 9.24 0.00 1.16 0.83 0.00 0.00 0.00 0.00 0.00 88.78 promedio: 2 3.49 0.17 1.00 0.00 0.00 0.00 0.00 0.00 0.00 95.35 promedio: 3 12.25 0.00 1.16 0.00 0.00 0.00 0.00 0.00 0.00 86.59 

Para ver las mismas estadísticas para un UPC (CPU 0 En el siguiente ejemplo), use:

# mpstat -p 0 -u 2 3 
Salida de muestra
Linux 3.19.0-32 Genérico (Tecmint.com) miércoles 30 de marzo de 2016 _X86_64_ (4 CPU) 11:42:08 IST CPU %USR %NICE %SYS %IOWAIT %IRQ %Soft %Stoal %Invitado %Gnice Idlea 11:42:10 IST 0 3 3.00 0.00 0.50 0.00 0.00 0.00 0.00 0.00 0.00 96.50 11:42:12 ist 0 4.08 0.00 0.00 2.55 0.00 0.00 0.00 0.00 0.00 93.37 11:42:14 ist 0 9.74 0.00 0.51 0.00 0.00 0.00 0.00 0.00 0.00 89.74 promedio: 0 5.58 0.00 0.34 0.85 0.00 0.00 0.00 0.00 0.00 93.23 

La salida de los comandos anteriores muestra estas columnas:

  1. UPC: Número de procesador como entero, o la palabra todo como promedio para todos los procesadores.
  2. %USR: Porcentaje de utilización de la CPU mientras se ejecuta aplicaciones a nivel de usuario.
  3. %lindo: Igual que %USR, Pero con buena prioridad.
  4. %SYS: Porcentaje de utilización de la CPU que ocurrió al ejecutar aplicaciones de kernel. Esto no incluye el tiempo dedicado a lidiar con interrupciones o manejo de hardware.
  5. %IOWAIT: Porcentaje de tiempo cuando la CPU (o todas) dada estaba inactiva, durante el cual hubo una operación de E/S intensiva en recursos programada en esa CPU. Aquí se puede encontrar una explicación más detallada (con ejemplos).
  6. %irq: Porcentaje de tiempo dedicado a servicio de hardware interrumpir.
  7. %suave: Igual que %irq, Pero con interrupciones de software.
  8. %robar: Porcentaje del tiempo dedicado a una espera involuntaria (robo o tiempo robado) cuando una máquina virtual, como invitada, está "ganando" la atención del hipervisor mientras compite por las CPU (s) de CPU (s). Este valor debe mantenerse lo más pequeño posible. Un valor alto en este campo significa que la máquina virtual se está estancando, o pronto lo será.
  9. %invitado: Porcentaje del tiempo dedicado a ejecutar un procesador virtual.
  10. %inactivo: porcentaje de tiempo cuando las CPU (s) no estaban ejecutando ninguna tarea. Si observa un valor bajo en esta columna, es una indicación de que el sistema se coloca bajo una carga pesada. En ese caso, deberá analizar más de cerca la lista de procesos, como discutiremos en un minuto, para determinar qué lo está causando.

Para colocar el lugar del procesador bajo una carga algo alta, ejecute los siguientes comandos y luego ejecute mpStat (como se indica) en un terminal separado:

# dd if =/dev/cero of = test.ISO BS = 1G Count = 1 # mpStat -u -p 0 2 3 # ping -f localhost # interrumpir con ctrl + c después de mpstat a continuación completa # mpStat -u -p 0 2 3 3 

Finalmente, compare con la salida de mpstat Bajo circunstancias normales:

Informe estadísticas relacionadas con los procesadores de Linux

Como puede ver en la imagen de arriba, CPU 0 estaba bajo una carga pesada durante los dos primeros ejemplos, como lo indican el %inactivo columna.

En la siguiente sección discutiremos cómo identificar estos procesos hambrientos de recursos, cómo obtener más información sobre ellos y cómo tomar las medidas apropiadas.

Informes de procesos de Linux

Para enumerar los procesos que los clasifican mediante el uso de la CPU, utilizaremos el bien conocido PD comando con el -EO (para seleccionar todos los procesos con formato definido por el usuario) y --clasificar (para especificar una orden de clasificación personalizada) Opciones, como así:

# PS -EO PID, PPID, CMD,%CPU,%Mem --sort = -%CPU 

El comando anterior solo mostrará el Pid, Ppid, El comando asociado con el proceso y el porcentaje de uso de CPU y RAM clasificado por el porcentaje de uso de la CPU en orden descendente. Cuando se ejecuta durante la creación del .Yo asi Archivo, aquí están las primeras líneas de la salida:

Encuentre los procesos de Linux por uso de CPU

Una vez que hemos identificado un proceso de interés (como el de PID = 2822), podemos navegar a /proc/pid (/Proc/2822 en este caso) y hacer una lista de directorio.

Este directorio es donde se mantienen varios archivos y subdirectorios con información detallada sobre este proceso en particular mientras se ejecuta.

Por ejemplo:
  1. /proc/2822/io Contiene estadísticas de IO para el proceso (número de caracteres y bytes leídos y escritos, entre otros, durante las operaciones de IO).
  2. /Proc/2822/Attr/Current muestra los atributos de seguridad selinux actuales del proceso.
  3. /proc/2822/cgroup describe los grupos de control (CGROUPS para abreviar) a los que pertenece el proceso si la opción de configuración de kernel config_cgroups está habilitada, con la que puede verificar:
# cat /boot /config -$ (uname -r) | GREP -I CGROUPS 

Si la opción está habilitada, debería ver:

Config_cgroups = y 

Usando CGROUPS Puede gestionar la cantidad de uso de recursos permitido por procesamiento por proceso como se explica en los capítulos 1 a 4 de la Guía de gestión de recursos Red Hat Enterprise Linux 7, en el Capítulo 9 de la Guía de análisis y ajuste del sistema OpenSuse, y en los grupos de control Sección del Ubuntu 14.04 Documentación del servidor.

El /Proc/2822/FD es un directorio que contiene un enlace simbólico para cada descriptor de archivo que el proceso se ha abierto. La siguiente imagen muestra esta información para el proceso que se inició en TTY1 (el primer terminal) para crear el .Yo asi imagen:

Encuentra información del proceso de Linux

La imagen de arriba muestra que stdin (Descriptor de archivo 0), stdout (Descriptor de archivo 1), y stderr (Descriptor de archivo 2) se asignan a /dev/cero, /root/test.Yo asi, y /dev/tty1, respectivamente.

Más información sobre /Proc se puede encontrar en "el /Proc Documento del sistema de archivos ”mantenido y mantenido por Kernel.org, y en el manual del programador de Linux.

Configuración de límites de recursos por usuario en Linux

Si no tiene cuidado y permite que cualquier usuario ejecute un número ilimitado de procesos, eventualmente puede experimentar un cierre inesperado del sistema o bloquearse a medida que el sistema entra en un estado inutilizable. Para evitar que esto suceda, debe colocar un límite en la cantidad de procesos que los usuarios pueden comenzar.

Para hacer esto, editar /etc/seguridad/límites.confusión y agregue la siguiente línea en la parte inferior del archivo para establecer el límite:

* duro nproc 10 

El primer campo se puede usar para indicar un usuario, un grupo o todos ellos (*), mientras que el segundo campo impone un límite difícil en el número de proceso (nProc) a 10. Aplicar cambios, cerrar sesión y volver es suficiente.

Por lo tanto, veamos qué sucede si un cierto usuario que no sea root (uno legítimo o no) intenta iniciar una bomba de bifurcación de shell. Si no hubiéramos implementado límites, esto inicialmente lanzaría dos instancias de una función y luego duplicaría cada uno de ellos en un bucle interminable. Por lo tanto, eventualmente llevaría su sistema a un rastreo.

Sin embargo, con la restricción anterior en su lugar, la bomba de la horquilla no tiene éxito, pero el usuario aún se bloqueará hasta que el administrador del sistema mate el proceso asociado con él:

Corre la bomba de bifurcación de shell

CONSEJO: Otras posibles restricciones hechas posibles por ulimit están documentados en el límites.confusión archivo.

Linux Otras herramientas de gestión de procesos

Además de las herramientas discutidas anteriormente, un administrador del sistema también puede necesitar:

a) Modificar la prioridad de ejecución (uso de los recursos del sistema) de un proceso utilizando re bueno. Esto significa que el núcleo asignará más o menos recursos del sistema al proceso en función de la prioridad asignada (un número comúnmente conocido como "amabilidad"En un rango de -20 a 19).

Cuanto menor sea el valor, mayor es la prioridad de ejecución. Los usuarios regulares (que no sean root) solo pueden modificar la amabilidad de los procesos que poseen a un valor más alto (lo que significa una prioridad de ejecución más baja), mientras que la raíz puede modificar este valor para cualquier proceso, y puede aumentarlo o disminuirlo.

La sintaxis básica de Renice es la siguiente:

# identificador de Renice [-n] 

Si el argumento después del nuevo valor de prioridad no está presente (vacío), se establece en PID de forma predeterminada. En ese caso, la amabilidad del proceso con PID = identificador se establece en .

b) Interrumpir la ejecución normal de un proceso cuando sea necesario. Esto se conoce comúnmente como "matar" el proceso. Bajo el capó, esto significa enviar el proceso una señal para finalizar su ejecución correctamente y liberar los recursos usados ​​de manera ordenada.

Para matar un proceso, use el matar Comando de la siguiente manera:

# matar pid 

Alternativamente, puede usar PKill para terminar todos los procesos de un propietario determinado (-u), o el propietario de un grupo (-GRAMO), o incluso aquellos procesos que tienen un PPID en común (-PAG). Estas opciones pueden ser seguidas por la representación numérica o el nombre real como identificador:

# identificador de pkill [opciones] 

Por ejemplo,

# pkill -g 1000 

matará todos los procesos propiedad de un grupo con GID = 1000.

Y,

# pkill -p 4993 

matará todos los procesos cuyo PPID es 4993.

Antes de ejecutar un pkill, Es una buena idea probar los resultados con pgrep Primero, tal vez usando el -l opción también para enumerar los nombres de los procesos. Se necesitan las mismas opciones, pero solo devuelve los PID de los procesos (sin tomar más medidas) que serían asesinadas si pkill se usa.

# PGREP -L -U GACANEPA 

Esto se ilustra en la siguiente imagen:

Encuentre los procesos de ejecución del usuario en Linux

Resumen

En este artículo, hemos explorado algunas formas de monitorear el uso de recursos para verificar la integridad y la disponibilidad de componentes críticos de hardware y software en un sistema Linux.

También hemos aprendido cómo tomar las medidas apropiadas (ya sea ajustando la prioridad de ejecución de un proceso dado o terminando) en circunstancias inusuales.

Esperamos que los conceptos explicados en este tutorial hayan sido útiles. Si tiene alguna pregunta o comentario, no dude en comunicarse con nosotros utilizando el formulario de contacto a continuación.

Convertirse en administrador del sistema certificado por Linux