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
- 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.
- 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. - 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