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?
Cuando los usuarios de Linux importan varios archivos a la base de datos, el proceso es engorroso. S
Hay un comando para terminar el proceso directamente bajo el sistema Linux. El códi
Hay algunas advertencias cuando se eliminan los archivos de Linux. Si no te das cuenta de estos deta
El sistema Crunchbang es una distribución de escritorio Linux liviana, Crunchbang Linux es popular e
Cómo instalar la herramienta de seguimiento jira
¿Qué debo hacer si reinicio la tarjeta en la pantalla del logotipo después de instalar Ubuntu 11.10?
Resumen de ejemplos de operación del comando histórico en Linux
Cómo CentOS 6.x para cambiar el nombre de la NIC
El espacio de arranque del sistema Ubuntu 12.04 no es suficiente para eliminar el núcleo antiguo
Ejemplos de uso del contenedor Docker en Linux
Solución de falla de salida telnet de CentOS
Ubuntu establece el método de resumen de método predeterminado
¿Cómo usa Linux las herramientas para cifrar datos?
Cómo usar el comando whereis para encontrar rápidamente archivos en Linux
Método de configuración de alta resolución de la notebook Win7
El uso mágico de Jumplist en windows7 y cómo cancelar esta función
Resuelva de la manera sencilla en que Win8 no puede jugar LOL
Volver Win8.1 oculta experiencia de sistema de puntuación de
¿Cómo win7 prohíbe que Adobe Flash Player se actualice automáticamente?
Los usuarios de Win10 Build 10547 pueden cambiar las cuentas de Microsoft
24 consejos de seguridad de Linux mejorados
El instalador del sistema Win7 muestra el error 0x800706d9 cómo resolverlo