GNU/Linux >> Tutoriales Linux >  >> Linux

Supervisión de procesos en Linux

Introducción

En este artículo discutiremos los comandos más comunes con ejemplos que se usan en el monitoreo de procesos en sistemas Linux tales como:

  • pd
  • arriba
  • arriba
  • lsof

1. pd

Como todos sabemos, Linux es un sistema multitarea y multiusuario. Por lo tanto, permite que múltiples procesos operen simultáneamente sin interferir entre sí. El proceso es uno de los conceptos fundamentales importantes del sistema operativo Linux. Un proceso es una instancia de ejecución de un programa y lleva a cabo diferentes tareas dentro del sistema operativo.

Linux nos proporciona una utilidad llamada ps para ver información relacionada con los procesos en un sistema que es la abreviatura de “Estado del proceso”. El comando ps se usa para enumerar los procesos que se están ejecutando actualmente y sus PID, junto con otra información, depende de las diferentes opciones. Lee la información del proceso de los archivos virtuales en /proc sistema de archivos. /proc contiene archivos virtuales, esta es la razón por la que se denomina sistema de archivos virtual.

ps ofrece numerosas opciones para manipular la salida según nuestras necesidades.

Sintaxis :

ps [options]

Opciones para el comando ps:

1- Selección de proceso simple:

Muestra los procesos para el shell actual

El resultado contiene cuatro columnas de información.
Donde,
PID: el ID de proceso único
TTY: tipo de terminal en el que el usuario ha iniciado sesión
TIEMPO: cantidad de CPU en minutos y segundos que el proceso ha estado ejecutando
CMD – nombre del comando que inició el proceso.

Nota: A veces, cuando ejecutamos ps comando, muestra HORA como 00:00:00. No es más que el tiempo total de utilización de CPU acumulado para cualquier proceso y 00:00:00 indica que el kernel no ha proporcionado tiempo de CPU hasta ahora. En el ejemplo anterior, encontramos que, para bash, no se ha dado tiempo de CPU. Esto se debe a que bash es solo un proceso principal para diferentes procesos que necesitan bash para su ejecución y bash en sí mismo no está utilizando tiempo de CPU hasta ahora.

2. Ver procesos:

Ver todos los procesos en ejecución, use cualquiera de las siguientes opciones con ps –

# ps -A
# ps -e
3. Ver procesos no asociados a un terminal:

Ver todos los procesos, excepto los líderes de sesión y los procesos no asociados con una terminal.

# ps -a

Nota: Puede estar pensando que ¿qué es el líder de sesión? Se asigna una sesión única a cada grupo de procesos. Entonces, el líder de la sesión es un proceso que inicia otros procesos. El ID de proceso del primer proceso de cualquier sesión es similar al ID de sesión.

4. Ver todos los procesos excepto los líderes de sesión:
# ps -d

5. Ver todos los procesos excepto aquellos que cumplen las condiciones especificadas (anula la selección):
Ejemplo: Si desea ver solo el líder de sesión y los procesos no asociados con una terminal. Luego, corre

# ps -a -N
or
# ps -a --deselect

6. Ver todos los procesos asociados con este terminal:

# ps -T

7. Ver todos los procesos en ejecución:

# ps -r

8. Ver todos los procesos de su propiedad: Procesos, es decir, el mismo EUID que ps, lo que significa que ejecuta el comando ps, raíz en este caso

# ps -x

Selección de procesos por lista

Aquí discutiremos cómo obtener la lista de procesos específicos con la ayuda del comando ps. Estas opciones aceptan un único argumento en forma de lista separada por comas o espacios en blanco. Se pueden utilizar varias veces.
Por ejemplo: pd -p “1 2” -p 3,4

  1. Seleccione el proceso por el nombre del comando. Esto selecciona los procesos cuyo nombre ejecutable se proporciona en cmdlist. Puede haber una posibilidad de que no conozca la ID del proceso y con este comando es más fácil buscar.

Sintaxis: ps -C nombre_comando

Ejemplo :

[root@unixcop ~]# ps -C dhclient
  PID TTY          TIME CMD
19815 ?        00:00:00 dhclient

2. Seleccione por ID o nombre de grupo. El ID de grupo identifica el grupo del usuario que creó el proceso.

Syntax : ps -G group_name
         ps --Group group_name

Example :
[root@unixcop ~]# ps -G root

3. Ver por ID de grupo:

Syntax : ps -g group_id
              ps -group group_id

Ejemplo ahora :

# ps -g 1

4. Ver proceso por ID de proceso.

-Syntax :
ps p process_id
ps -p process_id
ps --pid process_id

Y Ejemplos:

[root@unixcop ~]#  ps p 27223
  PID TTY      STAT   TIME COMMAND
27223 ?        Ss     0:01 sshd: root@pts/2

[root@unixcop ~]#  ps -p 27223
  PID TTY          TIME CMD
27223 ?        00:00:01 sshd

[root@unixcop ~]#  ps --pid 27223
  PID TTY          TIME CMD
27223 ?        00:00:01 sshd

Puede ver varios procesos especificando varios ID de proceso separados por espacios en blanco o comas:
Para Ejemplo:

[root@unixcop ~]#  ps -p 1 904 27223
  PID TTY      STAT   TIME COMMAND
    1 ?        Ss     0:13 /usr/lib/systemd/systemd --switched-root --system --d
  904 tty1     Ssl+   1:02 /usr/bin/X -core -noreset :0 -seat seat0 -auth /var/r
27223 ?        Ss     0:01 sshd: root@pts/2

Aquí, mencionamos tres ID de proceso:1, 904 y 27223, que están separados por espacios en blanco.

5. Seleccione por ID de proceso principal. Al usar este comando, podemos ver todos los procesos que pertenecen al proceso principal, excepto el proceso principal.

Ejemplos :

[root@unixcop ~]# ps -p 766
  PID TTY          TIME CMD
  766 ?        00:00:06 NetworkManager

[root@unixcop ~]# ps --ppid 766
  PID TTY          TIME CMD
19815 ?        00:00:00 dhclient

En el ejemplo anterior, ID de proceso 766 está asignado a NetworkManager y este es el proceso principal para dhclient con ID de proceso 19815.

6. Ver todos los procesos pertenecientes a cualquier ID de sesión.

Syntax :
ps -s session_id
ps --sid session_id

Example :
[root@unixcop ~]# ps -s 1248
  PID TTY          TIME CMD
 1248 ?        00:00:00 dbus-daemon
 1276 ?        00:00:00 dconf-service
 1302 ?        00:00:00 gvfsd
 1310 ?        00:00:00 gvfsd-fuse
 1369 ?        00:00:00 gvfs-udisks2-vo
 1400 ?        00:00:00 gvfsd-trash
 1418 ?        00:00:00 gvfs-mtp-volume
 1432 ?        00:00:00 gvfs-gphoto2-vo
 1437 ?        00:00:00 gvfs-afc-volume
 1447 ?        00:00:00 wnck-applet
 1453 ?        00:00:00 notification-ar
 1454 ?        00:00:02 clock-applet

7. Seleccione por tty. Esto selecciona los procesos asociados con el tty mencionado:

The Syntax :
ps t tty
ps -t tty
ps --tty tty

Por ejemplo :

# ps -t pts/0

8. Seleccione por ID o nombre de usuario efectivo.

Y la Sintaxis es:
ps U nombre_de_usuario/ID

ps -U nombre_usuario/ID

Control de formato de salida

Estas opciones se utilizan para elegir la información que muestra ps. Hay múltiples opciones para controlar el formato de salida. Estas opciones se pueden combinar con cualquier otra opción como e, u, p, G, g etc, depende de nuestra necesidad.

1. Utilice -f para ver la lista en formato completo.

ps -af

2. Usa -F para ver el formato extra completo.

ps -F

3. Para ver el proceso según el formato definido por el usuario.

#  ps --formate column_name
#  ps -o column_name
#  ps o column_name

Ejemplo :

ps -aN --format cmd,pid,user,ppid

En este ejemplo, deseo ver el comando, el ID del proceso, el nombre de usuario y el ID del proceso principal, así que paso los argumentos cmd, pid, user y ppid respectivamente.

4. Ver en formato de control de trabajo BSD:

ps -j

5. Mostrar formato largo BSD:

ps l

6. Agregue una columna de datos de seguridad.

ps -aM

7. Ver comando con formato de señal.

[root@unixcop ~]# ps s 766

8. Mostrar formato orientado al usuario

ps u 1

9. Mostrar formato de memoria virtual

ps v 1

10. Si desea ver el entorno de cualquier comando. Luego usa la opción **e** –

[root@unixcop ~]# ps ev 766
  PID TTY      STAT   TIME  MAJFL   TRS   DRS   RSS %MEM COMMAND
  766 ?        Ssl    0:08     47  2441 545694 10448  1.0 /usr/sbin/NetworkManager --no-daemon LANG=en_US.UTF-8 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin

11. Ver procesos usando la memoria más alta.

ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem

12. imprime un árbol de procesos

[root@unixcop ~]# ps --forest -C sshd
  PID TTY          TIME CMD
  797 ?        00:00:00 sshd
11680 ?        00:00:03  \_ sshd
16361 ?        00:00:02  \_ sshd

13. Enumere todos los subprocesos para un proceso en particular. Utilice -T o -L opción para mostrar hilos de un proceso.

[root@unixcop ~]# ps -C sshd -L
  PID   LWP TTY          TIME CMD
  797   797 ?        00:00:00 sshd
11680 11680 ?        00:00:03 sshd
16361 16361 ?        00:00:02 sshd

Nota: Para obtener una explicación de los diferentes contenidos de las columnas, consulte la página del manual.

Referencia: Página man

2. parte superior

superior El comando se utiliza para mostrar los procesos de Linux. Proporciona una vista dinámica en tiempo real del sistema en ejecución. Por lo general, este comando muestra la información resumida del sistema y la lista de procesos o subprocesos que actualmente administra el Kernel de Linux.
Tan pronto como ejecute este comando, se abrirá un modo de comando interactivo donde la mitad superior contendrá las estadísticas de los procesos y el uso de recursos. Y la mitad inferior contiene una lista de los procesos que se están ejecutando actualmente. Presionando q simplemente saldrá del modo de comando.

Sintaxis :

top

Aquí,

  • PID: Muestra el ID de proceso único de la tarea.
  • RP: Representa la prioridad de la tarea.
  • SHR: Representa la cantidad de memoria compartida utilizada por una tarea.
  • VIRT: Memoria virtual total utilizada por la tarea.
  • USUARIO: Nombre de usuario del propietario de la tarea.
  • % CPU: Representa el uso de la CPU.
  • TIEMPO+: CPU Time, lo mismo que 'TIME', pero reflejando más granularidad a través de centésimas de segundo.
  • SHR: Representa el tamaño de la memoria compartida (kb) utilizada por una tarea.
  • NI: Representa un buen valor de la tarea. Un valor Niza negativo implica una prioridad más alta, y un valor Niza positivo significa una prioridad más baja.
  • %MEM: Muestra el uso de memoria de la tarea.

Ejemplos:

1) Salir del comando superior después de una repetición específica: La salida superior sigue actualizándose hasta que presione 'q'. Con el siguiente comando, el comando superior saldrá automáticamente después de 20 repeticiones.

top -n 10

2) Mostrar proceso de usuario específico

top -u unixcop

aquí el usuario llamado unixcop

3) Resalte el proceso en ejecución en la parte superior: Presiona 'z' La opción en ejecutar el comando superior mostrará el proceso en ejecución en color, lo que puede ayudarlo a identificar fácilmente el proceso en ejecución

4) Muestra la ruta absoluta de los procesos:

Presiona 'c' opción al ejecutar el comando superior, mostrará la ruta absoluta de ejecución pro

5) Matar el proceso en ejecución: Puede eliminar un proceso después de encontrar el PID del proceso presionando ‘k‘ opción para ejecutar el comando superior sin salir de la ventana superior como se muestra a continuación.

6) Ordenar por uso de CPU: Presiona (Mayús+P) para ordenar los procesos según la utilización de la CPU.

7) Muestra la sintaxis del comando superior:

top -h 

8) Modo por lotes: Envíe la salida desde la parte superior al archivo o a cualquier otro programa.

top -b

9) Modo seguro: Use la parte superior en modo seguro.

top -s

10) Línea de comando: El siguiente comando comienza arriba con el último estado cerrado.

Top -c

11) Tiempo de retraso: Indica el tiempo de retraso entre las actualizaciones de pantalla.

top -d seconds.tenths

3. arriba

htop El comando en el sistema Linux es una utilidad de línea de comandos que permite al usuario monitorear de forma interactiva los recursos vitales del sistema o los procesos del servidor en tiempo real. arriba es un programa más nuevo en comparación con top comando, y ofrece muchas mejoras sobre el comando superior. htop admite la operación del mouse, usa color en su salida y brinda indicaciones visuales sobre el uso del procesador, la memoria y el intercambio. htop también imprime líneas de comando completas para procesos y permite desplazarse tanto vertical como horizontalmente para procesos y líneas de comando respectivamente.

Sintaxis:

htop [-dChusv]

Ejemplo:

Opciones:

  • -d –retraso: Se utiliza para mostrar el retraso entre actualizaciones, en décimas de segundo.
  • -C –sin color –sin color :Inicie htop en modo monocromático.
  • -h –ayuda: Se utiliza para mostrar el mensaje de ayuda y salir.
  • -u –usuario=NOMBRE DE USUARIO : Se utiliza para mostrar solo los procesos de un usuario determinado.
htop -u qadry
  • -p –pid=PID, PID… : Se usa para mostrar solo los PID proporcionados.
  • -s –sort-key COLUMNA: Ordene por esta columna (utilice la ayuda de la clave de clasificación para obtener una lista de columnas).
  • -V –versión: Información de la versión de salida y salida.

Comandos interactivos:

  • Flechas, Re Pág, Av Pág, Inicio, Fin :Desplácese por la lista de procesos.
  • Espacio :Etiquetar o desetiquetar un proceso.
  • U – Quite la etiqueta de todos los procesos (elimine todas las etiquetas agregadas con la tecla Espacio).
  • s – Seguimiento de llamadas al sistema de proceso.
  • F1 – Ayuda
  • F2 – configuración
  • F3 – buscar
  • F4 – filtrado:escriba parte de la línea de comando de un proceso y solo se mostrarán los procesos cuyos nombres coincidan.
  • F5 – Vista de árbol.
  • F6 – Clasificación.
  • F7 – Aumentar la prioridad del proceso seleccionado. Esto solo puede hacerlo el superusuario.
  • F8 – Disminuir la prioridad del proceso seleccionado.
  • F9 – Matar proceso.
  • F10 – Salir.

4. ls de

Linux/Unix considera todo como un archivo y mantiene una carpeta. Entonces “Archivos o un archivo” es muy importante en Linux/Unix. Mientras se trabaja en el sistema Linux/Unix, puede haber varios archivos y carpetas en uso, algunos de ellos serían visibles y otros no.
lsof comando significa Lista de archivos abiertos . Este comando proporciona una lista de archivos que se abren. Básicamente, brinda la información para averiguar qué archivos se abren mediante qué proceso. De una sola vez, enumera todos los archivos abiertos en la consola de salida. No solo puede enumerar archivos comunes comunes, sino que también puede enumerar un directorio, un archivo especial de bloque, una biblioteca compartida, un archivo especial de caracteres, una canalización normal, una canalización con nombre, un conector de Internet, un conector de dominio UNIX y muchos otros. se puede combinar con el comando grep y se puede usar para realizar búsquedas y listados avanzados.

Sintaxis:

lsof [option][user name]

Opciones con ejemplos:

  • Lista de todos los archivos abiertos: Este comando enumera todos los archivos abiertos por cualquier proceso en el sistema.
lsof

Aquí, observa que hay detalles de los archivos que se abren. ID de proceso, el usuario asociado con el proceso, FD (descriptor de archivo), el tamaño del archivo en conjunto brinda información detallada sobre el archivo abierto por el comando, ID de proceso, usuario, su tamaño, etc.

  • FD representa como descriptor de archivo.
  • cwd :directorio de trabajo actual.
  • texto :archivo de texto.
  • mem :Archivo de memoria.
  • mapa :dispositivo asignado a la memoria.
  • Lista de todos los archivos abiertos por un usuario: Hay varios usuarios de un sistema y cada usuario tiene requisitos diferentes y, en consecuencia, utilizan archivos y dispositivos. Para encontrar una lista de archivos abiertos por un usuario específico, este comando es útil.

Sintaxis:

lsof -u username

Ejemplo :

lsof -u qadry

En la figura anterior con el comando lsof -u qadry enumera todos los archivos abiertos por el usuario. Junto con eso, podemos ver el tipo de archivo aquí y son:

  • DIR: Directorio
  • REG: Archivo normal
  • CHR: Archivo especial de caracteres
  • Enumere todos los archivos que todos abren excepto un usuario específico: Con la ayuda de este comando, puede enumerar todos los archivos abiertos por todo el proceso y todo el usuario. Pero cuando queremos encontrar la lista de archivos que abren todos los usuarios, excepto un usuario en particular, podemos usar:

Sintaxis:

lsof -u ^root

En la figura dada podemos observar que no hay archivos abiertos por el usuario root.

  • Lista de todos los archivos abiertos por un proceso en particular: Este comando puede enumerar todos los archivos abiertos por un proceso en particular. -c seguido de los nombres de los procesos puede encontrar todos los archivos abiertos por ese proceso en particular que se nombra en el comando.
Sintaxis:
lsof -c crond

Aquí, puede observar que los archivos y su descripción se abrieron mediante el proceso crond.

  • Lista de todos los archivos abiertos que son abiertos por un proceso particular: Cada archivo está asociado con algún ID de proceso. Puede haber muchos archivos que son abiertos por un proceso particular. Al usar lsof -p ID de proceso, se pueden verificar los archivos abiertos por un proceso en particular.

Sintaxis:

lsof -p process ID

Ejemplo :

lsof -p 2781
  • Archivos abiertos por todos los demás PID: Como el comando de figura anterior enumera los archivos abiertos por un ID de proceso en particular. De la misma manera, puede usar la opción de comando a continuación para encontrar la lista de archivos que no están abiertos por un ID de proceso en particular.
Sintaxis:
lsof -p ^process ID
  • Lista de ID de procesos principales: Hay una gran cantidad de procesos que se ejecutan en un sistema y tienen archivos abiertos para su uso. Puede haber muchos procesos secundarios de un proceso y este proceso también puede denominarse proceso principal. Para averiguar la lista de archivos abiertos por el proceso principal, el comando Id lsof se usa con la opción -R .

Sintaxis:

lsof -R
  • Archivos abiertos por un directorio: Enumera los archivos que se abren en un directorio en particular. Hay archivos, así como el directorio en un sistema. Por lo tanto, puede haber varios archivos abiertos por un directorio, así como el archivo normal.

Sintaxis:

lsof -D directory path
  • Archivos abiertos por conexiones de red: Nuestro PC/sistema se puede conectar a través de varias redes, lo que ayuda en una variedad de propósitos. Como sabemos que en Linux todo es un archivo, podemos incluso comprobar los archivos que abren algunas conexiones de red en el sistema.

Sintaxis:

lsof -i

Ejemplo:

lsof -i tcp

Aquí, en la figura, podemos ver los archivos abiertos por la red TCP. De la misma manera, podemos verificar UDP, etc.

Nota: Para conocer más detalles sobre el comando lsof, puede ver la página del manual de la siguiente manera:

 man lsof

Linux
  1. 30 ejercicios de procesos de Linux para administradores de sistemas

  2. comando linux ps

  3. UNIX/Linux:3 Maneras de Enviar Señal a Procesos

  4. Procesos UNIX/Linux:Función C fork()

  5. Gestión de procesos en Ubuntu Linux

Los 30 mejores ejemplos de comandos para monitorear en Linux

Cómo matar procesos Zombie en Linux

Procesos corriendo

Comprender los procesos en Linux

Comandos para la Gestión de Procesos en Linux

Cómo enviar procesos a segundo plano en Linux