Procesos en Linux/Unix

Cuando se ejecuta un programa/comando, el sistema proporciona una instancia especial al proceso. Esta instancia consta de todos los servicios/recursos que puede utilizar el proceso en ejecución. 

  • Cada vez que se emite un comando en Unix/Linux, crea/inicia un nuevo proceso. Por ejemplo, cuando se emite pwd, que se utiliza para enumerar la ubicación actual del directorio en el que se encuentra el usuario, se inicia un proceso.
  • A través de un número de ID de 5 dígitos, Unix/Linux lleva una cuenta de los procesos, este número se llama ID de proceso o PID. Cada proceso en el sistema tiene un PID único.
  • Los pid usados ​​se pueden usar nuevamente para un proceso más nuevo, ya que se usan todas las combinaciones posibles.
  • En cualquier momento, no existen dos procesos con el mismo pid en el sistema porque es el pid que utiliza Unix para rastrear cada proceso.
     

Inicializar un proceso

Un proceso se puede ejecutar de dos maneras:  

Método 1: Proceso en primer plano: cada proceso, cuando se inicia, se ejecuta en primer plano de forma predeterminada, recibe entradas del teclado y envía la salida a la pantalla. Al emitir el comando pwd 

$ ls pwd

Producción: 

$ /home/geeksforgeeks/root

Cuando un comando/proceso se ejecuta en primer plano y lleva mucho tiempo, no se puede ejecutar ni iniciar ningún otro proceso porque el indicador no estará disponible hasta que el programa termine de procesarse y aparezca. 
 

Método 2: Proceso en segundo plano: se ejecuta en segundo plano sin entrada de teclado y espera hasta que se requiere la entrada de teclado. Así, se pueden realizar otros procesos en paralelo con el proceso que se ejecuta en segundo plano ya que no tienen que esperar a que se complete el proceso anterior. 
Agregar & junto con el comando lo inicia como un proceso en segundo plano 

 $ pwd &

Dado que pwd no desea ninguna entrada desde el teclado, pasa al estado de parada hasta que se mueve al primer plano y recibe cualquier entrada de datos. Así, al pulsar Enter:
Salida: 

[1]   +   Done                 pwd
$

Esa primera línea contiene información sobre el proceso en segundo plano: el número de trabajo y la identificación del proceso. Le dice que el proceso en segundo plano del comando ls finaliza con éxito. El segundo es un aviso para otro comando. 

Seguimiento de procesos en curso

ps (estado del proceso) se puede usar para ver/enumerar todos los procesos en ejecución. 

$ ps

PID       TTY      TIME        CMD
19        pts/1    00:00:00    sh
24        pts/1    00:00:00    ps

Para obtener más información, se puede usar -f (completo) junto con ps  

$ ps –f

UID      PID  PPID C STIME    TTY        TIME CMD
52471     19     1 0 07:20    pts/1  00:00:00f     sh
52471     25    19 0 08:04    pts/1  00:00:00      ps -f

Para información de un solo proceso, se usa ps junto con la identificación del proceso  

$ ps 19

PID       TTY      TIME        CMD
19        pts/1    00:00:00    sh

Para un programa en ejecución (proceso con nombre), Pidof encuentra la identificación del proceso (pids). 
Los campos descritos por ps se describen como: 

  • UID : ID de usuario al que pertenece este proceso (la persona que lo ejecuta)
  • PID : Identificación del proceso
  • PPID : ID del proceso principal (la ID del proceso que lo inició)
  • C : utilización de la CPU del proceso
  • STIME : Hora de inicio del proceso
  • TTY : Tipo de terminal asociado al proceso
  • TIEMPO : el tiempo de CPU es tomado por el proceso
  • CMD : el comando que inició este proceso

Hay otras opciones que se pueden usar junto con el comando ps: 

  • -a : Muestra información sobre todos los usuarios
  • -x : Muestra información sobre procesos sin terminales
  • -u : Muestra información adicional como la opción -f
  • -e : Muestra información extendida

Detener un proceso:
cuando se ejecuta en primer plano, al presionar Ctrl + c (carácter de interrupción) se saldrá del comando. Para los procesos que se ejecutan en segundo plano, se puede usar el comando kill si se conoce su pid. 

$ ps –f

UID      PID  PPID C STIME    TTY        TIME CMD
52471     19     1 0 07:20    pts/1  00:00:00      sh
52471     25    19 0 08:04    pts/1  00:00:00      ps –f

$ kill 19
Terminated

Si un proceso ignora un comando de eliminación regular, puede usar kill -9 seguido de la ID del proceso. 

$ kill -9 19
Terminated

Otros comandos de proceso:

bg : un comando de control de trabajos que reanuda los trabajos suspendidos mientras los mantiene ejecutándose en segundo plano 
Sintaxis:

bg [ job ]

Por ejemplo: 

bg %19

fg : Continúa un trabajo detenido ejecutándolo en primer plano. 
Sintaxis:  

fg [ %job_id ]

Por ejemplo  

fg 19

top : Este comando se usa para mostrar todos los procesos en ejecución dentro del entorno de trabajo de Linux. 
Sintaxis:  

top

agradable : inicia un nuevo proceso (trabajo) y le asigna un valor de prioridad (agradable) al mismo tiempo. 
Sintaxis:  

nice [-nice value] 

El valor agradable varía de -20 a 19, donde -20 es la prioridad más alta. 

renice : para cambiar la prioridad de un proceso que ya se está ejecutando, se utiliza renice. 
Sintaxis:  

renice [-nice value] [process id]

df : muestra la cantidad de espacio disponible en disco que utilizan los sistemas de archivos. 
Sintaxis:  

df

Producción:  

Filesystem     1K-blocks      Used Available Use% Mounted on
/dev/loop0      18761008  15246876   2554440  86% /
none                   4         0         4   0% /sys/fs/cgroup
udev              493812         4    493808   1% /dev
tmpfs             100672      1364     99308   2% /run
none                5120         0      5120   0% /run/lock
none              503352      1764    501588   1% /run/shm
none              102400        20    102380   1% /run/user
/dev/sda3      174766076 164417964  10348112  95% /host

free : Muestra la cantidad total de memoria física y swap libre y usada en el sistema, así como los buffers usados ​​por el kernel 
Sintaxis:  

free

Producción:  

             total       used       free     shared    buffers     cached
Mem:       1006708     935872      70836          0     148244     346656
-/+ buffers/cache:     440972     565736
Swap:       262140     130084     132056

Tipos de Procesos

  1. Proceso principal y secundario: la segunda y la tercera columna del comando ps –f muestran la identificación del proceso y el número de identificación del proceso principal. Para cada proceso de usuario, hay un proceso principal en el sistema, y ​​la mayoría de los comandos tienen shell como su principal.
  2. Proceso zombi y huérfano: después de completar su ejecución, un proceso secundario finaliza o se elimina y SIGCHLD actualiza el proceso principal sobre la finalización y, por lo tanto, puede continuar con la tarea que se le asignó. Pero a veces, cuando el proceso principal se elimina antes de la finalización del proceso secundario, los procesos secundarios se convierten en procesos huérfanos, y el proceso principal de todos los procesos «init» se convierte en su nuevo pid. 
    Un proceso que se elimina pero aún muestra su entrada en el estado del proceso o en la tabla de procesos se denomina proceso zombie, están muertos y no se utilizan.
  3. Proceso de daemon: son procesos en segundo plano relacionados con el sistema que a menudo se ejecutan con los permisos de root y requests de servicios de otros procesos, la mayoría de las veces se ejecutan en segundo plano y esperan procesos con los que puede funcionar para ex print daemon. 
    Cuando se ejecuta ps –ef, el proceso con ? en el campo tty hay procesos daemon.

Publicación traducida automáticamente

Artículo escrito por PraveenNegi y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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