Gestión de procesos en Unix/Linux

Cuando ejecuta un programa en un sistema Unix, el sistema crea un entorno especial para el programa. Este entorno contiene todo lo que el sistema necesita para ejecutar este programa si no se está ejecutando ningún otro programa en el sistema.

Cada vez que informa un comando de Unix, crea o inicia un nuevo proceso. Cuando intenta ejecutar el comando ls para enumerar el contenido del directorio, inicia un proceso. En palabras simples, el proceso es un ejemplo de un programa de trabajo.

El sistema operativo rastrea los procesos a través de un identificador de 5 dígitos llamado pid ID o identificador de proceso.Cada proceso en el sistema tiene un único PID .

El pid se repite a menudo porque todos los números están disponibles y se repite el siguiente pid. En ningún momento puede haber dos procesos en el sistema con los mismos dos pids al mismo tiempo, porque este es el pid que usa Unix para monitorear cada proceso.

Iniciar el proceso en Unix/Linux

Cuando inicia un proceso (ejecuta un comando), hay dos formas de iniciarlo:

proceso en primer plano

proceso tras bambalinas

Proceso en primer plano en Unix / Linux

De forma predeterminada, todos los procesos que inicia son procesos en primer plano. Recibe entrada del teclado y envía una salida a la pantalla.

Puede monitorear esto con el comando ls. Si desea enumerar todos los archivos en el directorio actual, puede usar el siguiente comando:

  $ ls ch *.  doc 

Mostrará todos los archivos cuyos nombres comiencen y terminen con .doc.

  ch01 - 1.doc ch010 .  doc ch02 .  doc ch03 - 2.doc ch04 - 1.doc ch040 .  doc ch05 .  doc ch06 - 2.doc ch01 - 2.doc ch02 - 1.doc 

El proceso se ejecuta en primer plano, sus resultados se muestran directamente en mi pantalla y, si es necesario ingresar el comando ls, espera en el teclado.

Cuando el programa se ejecuta en primer plano y lleva mucho tiempo, no podemos ejecutar ningún otro comando (iniciar otro proceso) porque el indicador no está disponible hasta que se inicia el programa. compromiso y salida.

Procesos en segundo plano en Unix/Linux

El proceso en segundo plano funciona sin estar conectado al teclado. Si el proceso en segundo plano necesita entrada de teclado, espera.

Lo bueno de ejecutar un programa en segundo plano es que puede ejecutar otros comandos; ¡no tiene que esperar hasta que termine para comenzar un nuevo proceso!

La forma más sencilla de iniciar el proceso en segundo plano es agregar un ampersand al final del comando.

  $ ls ch *.  doc & 

También muestra todos los archivos cuyos nombres comienzan y terminan con .doc:

  ch01 - 1.doc ch010 .  doc ch02 .  doc ch03 - 2.doc ch04 - 1.doc ch040 .  doc ch05 .  doc ch06 - 2.doc ch01 - 2.doc ch02 - 1.doc 

Aquí, si ls El comando debe ingresarse (no), entra en un estado de pausa hasta que lo mueve al primer plano y le da datos desde el teclado.

La primera línea contiene información sobre el proceso en segundo plano: número de trabajo e ID del proceso. Necesita saber el número de trabajo para trabajar entre el fondo y el primer plano.

Si presiona Entrar ahora, verá lo siguiente:

  [ 1 ] + Done ls ch *.  doc & $ 

La primera línea le dice que el comando ls en el proceso en segundo plano se completó con éxito. La segunda línea solicita otro comando.

Enumere los procesos que se ejecutan en Unix/Linux

Es fácil observar su proceso mientras ejecuta PD (estado del proceso), de la siguiente manera:

  $ ps PID TTY TIME CMD 18358 ttyp3 00 : 00 : 00 sh 18361 ttyp3 00 : 01 : 31 abiword 18789 ttyp3 00 : 00 : 00 ps 

Una de las banderas es para ps como -f (abreviatura de full), que proporciona mucha información, como se muestra en el siguiente ejemplo:

  $ ps - f UID PID PPID C STIME TTY TIME CMD amrood 6738 3662 0 : 23 : 03 pts / 6 0:00 first_one amrood 6739 3662 0 10 : 22 : 54 pts / 6 0:00 second_one amrood 3662 3657 0 08 : 10 : 53 pts / 6 0:00 - ksh amrood 6892 3662 4 10 : 51 : 50 pts / 6 0 : 00 ps - f 

A continuación se muestra una descripción de todos los archivos que muestra el comando ps -f.

Descripción de la columna UID Identificador de usuario al que pertenece este proceso (quién lo realiza). PID Proceso ID.original PPID Proceso (el número de identificación del proceso que lo inició). °C Uso de CPU. curso del tiempo Tiempo de empezar. TTY El tipo de terminal asociado con el proceso. hora Tiempo de procesador utilizado por el proceso. Pedido El comando para iniciar este proceso.

Hay otras funciones que se pueden usar en paralelo con ps:

Función descriptiva -Una Muestra información para todos los usuarios. -X Muestra información sobre procesos sin terminales. -tu Muestra información adicional, como la función -f. -mi La información de la pantalla se ha ampliado.

Detener el proceso en Unix/Linux

El final de un proceso se puede hacer de varias maneras diferentes. Por lo general, desde un comando basado en consola, enviar CTRL + C seguido de una pulsación de tecla (el carácter de interrupción predeterminado) cancelará el comando. Funciona cuando el proceso se ejecuta en modo de primer plano.

Si el proceso se ejecuta en segundo plano, primero debe usar el comando ps para obtener la identificación del trabajo, luego puede usar el comando kill para eliminar los siguientes procesos:

  $ ps - f UID PID PPID C STIME TTY TIME CMD amrood 6738 3662 0 : 23 : 03 pts / 6 0:00 first_one amrood 6739 3662 0 10 : 22 : 54 pts / 6 0:00 second_one amrood 3662 3657 0 08 : 10 : 53 pts / 6 0:00 - ksh amrood 6892 3662 4 10 : 51 : 50 pts / 6 0 : 00 ps - f $ kill 6738 Terminated 

Aquí el comando kill terminará el proceso first_one. Si el proceso a menudo ignora el comando kill, puede usar kill -9 seguido de la ID del proceso de la siguiente manera:

  $ kill - 9 6738 Terminated 

Procesos padre e hijo en Unix/Linux

Cada proceso de Unix tiene dos identificadores asignados: el identificador del proceso (pid) y el identificador del proceso principal (ppid). Cada proceso en el sistema tiene un proceso padre.

La mayoría de los comandos que ejecuta comienzan con un shell. Consulte el ejemplo ps -f, que enumera el identificador del proceso y el identificador del proceso original.

Lidiar con zombis y huérfanos

Por lo general, cuando se elimina el proceso secundario, se notifica al proceso principal mediante el símbolo SIGCHLD. El proceso inicial puede realizar otras tareas o reiniciar el proceso secundario si es necesario. Sin embargo, a veces el proceso de crianza se elimina antes de que se elimine a su hija. En este caso, el proceso principal de todos los procesos, el "proceso inicial", se convierte en el nuevo PPID (proceso de ID principal). A veces, estos procesos se denominan procesos huérfanos.

Cuando se elimina el proceso, la lista ps aún puede mostrar el progreso del estado Z. Este es un estado zombi o el proceso no existe. Este procedimiento ha sido eliminado y no se utiliza. Estos procesos no son lo mismo que los procesos huérfanos. Estos son procesos completados, pero la rima tiene una entrada en la tabla de procesos.

Demonios en Unix / Linux

El daemon está asociado con el proceso en segundo plano del sistema, que generalmente se realiza con acceso raíz y los servicios requeridos por otro proceso.

El daemon no tiene terminal de control. No se puede abrir / dev / tty. Si haces ps-ef y miras el campo tty, ¿se resaltarán todos los demonios? para tty.

Sin duda, un daemon es simplemente un proceso que se ejecuta en segundo plano, generalmente esperando que suceda algo que pueda manejarse, con la impresora daemon esperando un trabajo de impresión.

Si tiene un programa que necesita un proceso largo, vale la pena crear un demonio y ejecutarlo en segundo plano.

Comandos principales en Unix / Linux

El comando superior es una herramienta muy útil para mostrar rápidamente los procesos ordenados por varios criterios.

Es una herramienta de diagnóstico interactiva que se actualiza regularmente y muestra información sobre la memoria física y virtual, el uso de la CPU.

Aquí hay una sintaxis simple para ejecutar el comando superior y monitorear estadísticas sobre el uso de la CPU de varios procesos:

  $ top 

ID de trabajo con ID de proceso en Unix / Linux

Los procesos en segundo plano y en primer plano suelen funcionar con un ID de trabajo. Este número es diferente del ID del proceso y se usa porque es más corto.

Además, el trabajo puede contener varios procesos que se ejecutan secuencialmente o en paralelo, lo que facilita el seguimiento de procesos individuales mediante la identificación del trabajo.

Según el punto de entrenamiento

Artículo anterior: Filtros y tubos en Unix/Linux

Próxima lección: Utilidades de comunicación de red Unix / Linux

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir
error: Content is protected !!