¿Cuáles son las relaciones entre los procesos en el sistema Linux?

  

Como administrador del sistema Linux, para poder administrar mejor el proceso, es necesario tener una comprensión detallada de la relación entre los procesos. Las siguientes series pequeñas presentarán la relación entre los procesos Linux y aprenderán juntos. Vamos

Los procesos de Linux tienen una cierta relación entre sí. Por ejemplo, en la base de procesos de Linux, vemos que cada proceso tiene un proceso principal, y todos los procesos toman el proceso de inicio como la raíz para formar una estructura de árbol. Estamos aquí para explicar los grupos de procesos y las sesiones para administrar los procesos de una manera más rica.

Grupo de procesos

Cada proceso pertenece a un grupo de procesos y cada grupo de procesos puede contener varios procesos. El grupo de procesos tiene un líder de grupo de procesos, y el PID del proceso de líderes (consulte la base del proceso de Linux) se convierte en el ID del grupo de procesos (PGID) para identificar el grupo de procesos.

El código es el siguiente:

$ ps -o pid, pgid, ppid, comm |  Cat "/p" "p" PID PID PID DE PIDIDO

17763 17763 17751 bash

18534 18534 17763 ps

18535 18534 17763 cat

PID es ID del proceso en sí, PGID es el ID del grupo de procesos donde se ubica el proceso y PPID es el ID del proceso. De los resultados anteriores, podemos deducir la siguiente relación:

Las flechas indican el proceso padre genera un proceso hijo por el tenedor y el mecanismo ejecutivo. Tanto ps como cat son procesos hijos de bash. El PID del proceso del líder del líder del proceso se convierte en la ID del grupo de procesos. El proceso de liderazgo puede ser terminado primero. En este punto, el grupo de procesos todavía existe y mantiene el mismo PGID hasta que finaliza el último proceso en el grupo de procesos.

Una razón importante por la que clasificamos algunos procesos como grupos de procesos es que podemos enviar señales a un grupo de procesos. Esta señal es recibida por todos los procesos en el grupo de procesos. Discutiremos esto en profundidad en la siguiente sección.

Sesiones

Además, en el caso de un shell que admite el control de tareas, varios grupos de procesos también pueden formar una sesión. Bash (shell Bourne-Again) admite control de trabajo, mientras que sh (shell Bourne) no lo admite.

Una sesión se establece mediante un proceso denominado líder de sesión. El PID del proceso de líder de sesión se convierte en el SID (ID de sesión) que identifica la sesión. Cada grupo de proceso en una sesión se llama un trabajo. Una sesión puede tener un proceso compuesto por el trabajo en primer plano de la sesión, mientras que los otros grupos de procesos son trabajos en segundo plano. Cada sesión se puede conectar a un terminal de control. Cuando el terminal de control tiene entrada y salida, se pasa al grupo de proceso de primer plano de la sesión. Las señales generadas por el terminal, como CTRL + Z, CTRL + \\, se pasan al grupo de proceso de primer plano.

El significado de la sesión es incluir trabajo múltiple en un terminal, y tomar uno de ellos como primer plano para recibir directamente la entrada y la salida del terminal y la señal del terminal. Otros trabajos se ejecutan en el fondo.

Se puede ejecutar un comando en segundo plano agregando &al final:

El código es el siguiente:

$ ping localhost》 log &

El terminal muestra:

El código es el siguiente:

[1] 10141

El 1 entre paréntesis indica el número de trabajo, y 10141 es el PGID

La información más detallada se consulta de la siguiente manera:

El código es el siguiente:

$ ps -o pid, pgid, ppid, sid, tty, comm

(tty representa el terminal de control )

La señal se puede pasar a kill

de la siguiente manera:

$ kill -SIGTERM -10141

o

El código es el siguiente:

$ kill -SIGTERM% 1

se envía al grupo de trabajo. Los dos comandos anteriores, uno se envía al PGID (agregando - delante del PGID para indicar que es un PGID en lugar del PID), y uno se envía al trabajo 1 (% 1), que es equivalente.

Se puede cambiar un trabajo de trabajo en segundo plano a trabajo en primer plano a través de $ fg:

El código es el siguiente:

$ cat》 log &

$ fg% 1

Cuando ejecutamos el primer comando, no podemos ingresar el comando porque el trabajo se encuentra en segundo plano, hasta que no pongamos el trabajo en primer plano, podemos ingresar el comando cat. Una vez completada la entrada, presione CTRL + D para informar el final de la entrada del shell.

El concepto de grupo de proceso (trabajo) es relativamente sencillo. La sesión está construida principalmente para un terminal. Cuando abrimos múltiples ventanas de terminal, en realidad creamos múltiples sesiones de terminal. Cada sesión tendrá su propio trabajo de recepción y trabajo de fondo. De esta manera, hemos agregado un nivel de gestión y operación al proceso. En una era sin una interfaz gráfica, las sesiones permiten a los usuarios iniciar y administrar múltiples niveles de procesos a través del shell. Por ejemplo, puedo iniciar varios trabajos en segundo plano a través del shell, y en este momento la entrada y salida estándar no están ocupadas, aún puedo continuar con otro trabajo. Hoy en día, las interfaces gráficas pueden ayudarnos a abordar esta necesidad, pero los grupos de trabajo y los mecanismos de sesión todavía se utilizan en muchos lugares en Linux.

Resumen

grupo de procesos, pgid

sesión, sid, job, forground, background

fg, kill -pid, &,%

Lo anterior es la relación entre los procesos de Linux. De hecho, existe una cierta relación entre los procesos. Cada proceso pertenece a un grupo de procesos. ¿Tiene cierta comprensión de la relación entre los procesos?

Copyright © Conocimiento de Windows All Rights Reserved