fbpx Gestionar procesos en Linux: ps, kill, top, bg y fg | Certificação Linux

Comandos Linux: guía completa para gestionar procesos

📅 11/05/2022 ⏱ 26 min ✍️ Uira Ribeiro
Linuxcómo-hacer
Comandos Linux: guía completa para gestionar procesos
Exam Pass App — mais de 7.000 questões LPI, offline, em 5 idiomas, disponível no Android e na App Store
Disponible en
Google Play
Disponible en
App Store

¿Sabes cómo ejecutar comandos para gestionar procesos en Linux? Esta es una dificultad natural de todos los usuarios y programadores principiantes o incluso intermedios del universo Linux.

Saber qué comandos deben usarse para cada función es una responsabilidad de quienes usan Linux como su entorno y herramienta de trabajo.

Además, también es tu responsabilidad analizar qué procesos se están ejecutando y balancearlos, para que el procesador o el Kernel de Linux no se sobrecargue.

Todos estos puntos no son conocimientos adquiridos "de la noche a la mañana", sino que se aprenden con el tiempo, a través del estudio sobre cuáles son los mejores comandos de Linux.

Con esto en mente, el equipo de Certificación Linux desarrolló este contenido completo, con todo lo que necesitas saber sobre listar procesos en Linux y gestionarlos de manera efectiva.

En este artículo, encontrarás los principales comandos de Linux para gestión de procesos y para otras diversas funcionalidades.

Para obtener toda la información que separamos, simplemente continúa con la lectura. ¡Confira!

Qué son los Comandos de Linux

Linux es un sistema operativo muy utilizado por programadores, pero también por usuarios comunes en actividades más simples. 

Por tratarse de un sistema de código abierto, existen innumerables maneras de utilizar Linux y, por lo tanto, existen diversos comandos de Linux.

Linux también cuenta con una serie de sistemas, como Ubuntu, Fedora, Debian, Mint y otros. De esta manera, la lista de comandos se extiende aún más. 

Los comandos de Linux buscan facilitar la ejecución de acciones y procesos dentro del sistema operativo Linux, lo cual puede ser muy útil para todos los perfiles de usuarios.

Dentro de la línea de comandos, también conocida como prompt, basta con escribir el comando para un proceso que deseas ejecutar y automáticamente se inicia.

¡Existen comandos básicos de Linux para todos los usos!

Los comandos básicos de Linux pueden ser utilizados para diversos fines. Muchas personas que trabajan con TI utilizan Ubuntu y Fedora, que son parte de Linux.

De esta manera, para lograr explorar todas las herramientas que estos sistemas tienen para ofrecer, es necesario saber comandos básicos.

No solo personas que trabajan con tecnología, sino también usuarios comunes pueden hacer uso de Linux.

Lo único que una persona que desea optimizar sus procesos con Linux necesita hacer es migrar a una interfaz de línea de comandos (CLI).

La mayoría de las versiones de Linux utilizan la interfaz gráfica del usuario (GUI), que está dirigida a los usuarios cotidianos. 

Así, para utilizar comandos básicos o avanzados de Linux es preciso aprender al menos cómo acceder a la CLI.

Pero no te preocupes. En este contenido, separamos una guía completa para que te vuelvas experto en los comandos de Linux.

Comprende la importancia de aprender los comandos de Linux

Aprender los comandos básicos de Linux es fundamental para mejorar tu trabajo, en caso de que esta sea la razón por la cual utilizas el sistema operativo.

Los contenidos que enseñan a utilizar Linux con más profundidad están dirigidos a quienes ya saben utilizar comandos shell, es decir, los que avanzaron de una simple interfaz gráfica de usuario. 

Esto significa que quien entiende de los comandos de Linux tiene mayor acceso a información del sistema operativo.

Los comandos perfeccionan el trabajo de profesionales de la tecnología y además los destacan en relación con otros trabajadores que también utilizan el sistema, pero de forma menos aplicada.

Comandos de Linux para gestión de procesos 

Los comandos de Linux son útiles para diversas actividades, como la gestión de procesos. Esto porque los comandos logran hacer, de manera práctica, que las acciones se ejecuten.

Es innegable que, por esta razón, Linux es bastante utilizado por desarrolladores, en diferentes empresas.

Además de ser un sistema operativo de código abierto, Linux es versátil y construido por medio de una comunidad abierta.

¿Quieres comenzar a aprender sobre comandos de Linux o profundizar tus estudios? ¡Este artículo te ayudará con eso!

¿Qué es un proceso en Linux?

Cualquier acción en ejecución en el sistema Linux puede ser clasificada como un proceso y, como tal, necesita ser gestionada.

Esta gestión solo ocurre a través de comandos específicos, que determinan cuándo el proceso se detendrá, quedará en segundo plano o será iniciado.

Quien administra Linux necesita conocer los comandos como la palma de su mano, para saber controlarlos y pausarlos cuando sea necesario.

También es posible crear "capas" de ejecución de los procesos, colocando los más importantes y principales en primer plano y los otros, en segundo.

De esta forma, el Kernel de Linux no se sobrecargará y no tendrá su capacidad perjudicada.

Después de todo, algunos procesos pueden ser demasiado "egoístas" y terminar agotando todo el potencial del procesador, que queda sin recursos suficientes para el resto de las aplicaciones.

Esto solo sucede porque Linux es capaz de gestionar los procesos de manera eficaz, con el multiprocesamiento real, siempre que reciba los comandos correctos.

En Linux, los procesos se definen por su propietario, por su estado (si en ejecución o pausado, por ejemplo), por la prioridad de la ejecución y por los recursos que necesita.

Señales de procesos en Linux

Cada proceso en Linux queda a la escucha de señales. Estas señales son utilizadas por el Kernel, por otros procesos o por el usuario para avisar a un proceso determinado sobre algún evento en particular.

El gurú de UNIX W. Richard Stevens describe las señales como interrupciones de software.

Cuando una señal es enviada a un proceso, este toma una determinada acción dependiendo del valor que la señal transporta. Cada señal tiene un nombre exclusivo y un valor numérico.

Linux posee más de 30 señales definidas. La mayoría es utilizada por el Kernel y algunas por los usuarios. Observa las más importantes, sus valores y sus acciones:

SeñalValor NuméricoAcción
HUP1Colgar o desconexión. Esta señal se utiliza automáticamente cuando te desconectas de una sesión o cierras un terminal. También es utilizada por procesos servidores para invocar la relectura del archivo de configuración.
KILL9Terminar el proceso incondicionalmente de forma rápida y drástica. Este tipo de señal puede dejar archivos abiertos y bases de datos corruptas. Debe utilizarse en caso de que el proceso deje de responder o en una emergencia.
TERM15Termina el proceso de forma elegante, posibilitando que cierre archivos y ejecute sus rutinas de fin de ejecución.
TSTP20Termina la ejecución para continuar después. Esta señal se envía automáticamente cuando utilizamos las teclas ctrl-z. Se utiliza para colocar el proceso en segundo plano.

La comprensión de las señales es importante para saber cómo el sistema interactúa con los procesos en ejecución.

Comandos para control de procesos en segundo plano

Como otros sistemas operativos completos, Linux permite colocar procesos en segundo plano de ejecución (background).

Para que un proceso se ejecute en segundo plano, es necesario que no espere por ninguna acción del usuario, por ejemplo: esperar por un subcomando.

En este estado el proceso se comunicará con el usuario a través de las señales.

Básicamente para colocar cualquier proceso en segundo plano de ejecución, basta con agregar el carácter "&" al final de la línea de comando que ejecutará el proceso:

$ find / -name *.conf > lista_arquivos_configuracao.txt &

El comando find se ejecutará en segundo plano y su salida será dirigida al archivo lista_arquivos_configuracao.txt.

1. Comando jobs

Uso:

$ jobs [opções]

El comando jobs lista los procesos en ejecución en segundo plano. Si se proporciona un número de tarea, el comando retornará la información pertinente únicamente a esa tarea.

El número de tarea se proporciona cuando el proceso se coloca en segundo plano.

Las opciones más frecuentes son:

-l Lista o PID dos processos em segundo plano.

2. Comando bg

Uso:

$ bg [número_da_tarefa]

El comando bg coloca en segundo plano un proceso en ejecución. Colocar la señal "&" después de la llamada del comando produce el mismo efecto.

Si un comando ya está en ejecución en primer plano, es decir, conectado a un terminal, podemos interrumpir temporalmente su ejecución con la señal TSTP (18) presionando las teclas ctrl-z y accionándolo después del comando bg.

3. Comando fg

Uso:

$ fg [número_da_tarefa]

El comando fg hace exactamente lo opuesto al comando bg, colocando la tarea en primer plano y conectada a un terminal.

4. Comando nohup

Uso:

$ nohup [comando]

El utilitario nohup ejecuta el comando especificado sin asociarlo a ningún terminal, de forma inmune a bloqueos, caídas de conexión y desconexiones intencionales.

Ejemplo:

$ nohup find / -name uira* > arquivos_econtrados &

En este ejemplo, nohup ejecutará el comando find / -name uira* y enviará la salida a arquivos_econtrados, que se ejecutará en segundo plano.

Comandos para modificar prioridad de ejecución

El Kernel de Linux tiene como una de sus actividades críticas el planificador de procesos.

Este planificador es un algoritmo especial que coloca en cola todos los procesos en ejecución y decide qué proceso se ejecutará y durante cuánto tiempo.

El planificador es lo que permite que la computadora pueda ejecutar más de un proceso en concurrencia, dividiendo la CPU en fracciones de tiempo de ejecución.

La implementación del planificador es tan importante que es lo que realmente marca la diferencia en los sistemas operativos modernos.

Linux permite que el usuario interfiera en la prioridad de ejecución de los procesos liberando más o menos tiempo de CPU.

La lista de prioridades se puede ver con el comando ps –lax en la columna PRI.

Cuanto mayor sea el número de prioridad, más tiempo de CPU tiene el proceso y más importante es. Cuanto menor el número, menos tiempo de CPU y menor importancia.

Es posible modificar la prioridad de ejecución de los procesos en Linux, a través de los comandos nice y renice. Estos comandos son extremadamente útiles en entornos multiusuario.

Imagine un servidor con muchos usuarios conectados y cada uno ejecutando algo.

En este tipo de entorno, es necesario dar más o menos porciones de procesamiento a los diversos programas de los usuarios, para mantener un entorno estable y organizado.

5. Comando nice

Uso:

$ nice [-n ajuste_de_prioridade] [comando]

El comando nice ajusta el tiempo disponible de CPU de un proceso para más o para menos prioridad.

En inglés la palabra "nice" significa "amable". Si el ajuste de prioridad para un proceso es un número positivo, significa que está siendo más amable con los otros programas al disminuir su prioridad.

Si el ajuste es un número negativo, significa que el programa está siendo menos amable, aumentando su prioridad de ejecución y quedando menos tiempo de CPU para los otros programas.

El ajuste de prioridad posible va desde -20 (más prioridad / menos amable) hasta 19 (más amable, menos prioridad).

Si no se pasa ningún valor de ajuste, el comando nice ajustará la prioridad a +10, disminuyendo el tiempo de ejecución del proceso.

$ nice updatedb &

En este ejemplo el comando updatedb tiene menos prioridad de ejecución.

$ nice –n –10 folha_pagamento

En este ejemplo el comando folha_pagamento se ejecutará con más prioridad.

6. Comando renice

Uso:

$ renice [+/-] ajuste_prioridade [opções] PID/Usuário

El comando renice ajusta la prioridad de ejecución de procesos que ya están ejecutándose. Por defecto, el comando renice recibe como parámetro el PID de un determinado proceso.

El ajuste de prioridad es un número entero que va desde -20 (mayor prioridad) hasta +20 (ejecutar cualquier cosa antes de este proceso).

Las opciones más usuales son:

  • -p: Recibe un PID para alterar su prioridad.
  • -u: Recibe un nombre de usuario para alterar la prioridad de todos los procesos de este usuario en ejecución.
  • -g: Recibe un nombre de un grupo para alterar la prioridad de todos los procesos pertencientes a este grupo.

Ejemplo:

# renice -1 987 -u daemon root -p 32

En este ejemplo, el proceso número PID 987, PID 32 y todos los procesos de los usuarios daemon y root van a tener más prioridad.

Otros comandos para gestión de procesos

Todavía existen otros comandos para la gestión de procesos en Linux, siendo estos:

En general, estos comandos están relacionados y sirven para mostrar o hacer posible la visualización de los procesos en ejecución y sus respectivos atributos.

7. Comando ps

Uso:

$ ps [opções]

El comando ps genera una lista con todos los procesos en ejecución y sus atributos.

Las opciones más frecuentes son:

  • -a: muestra los procesos en ejecución de todos los usuarios. Normalmente solo muestra los procesos pertencientes al usuario que ejecutó el ps;
  • -u: : muestra la lista de procesos incluyendo el nombre de los usuarios dueños de los procesos e inicio de las ejecuciones, porcentaje de CPU utilizada, porcentaje de memoria utilizada y terminal asociado;
  • -x: muestra la lista de procesos que no tienen un terminal asociado a él. Útil para visualizar procesos servidores (daemons);
  • f: muestra los procesos en forma de árbol. Muy útil para identificar la relación de proceso padre e hijo entre los procesos en ejecución.

Vea la ayuda del comando ps para más opciones.

8. Comando pstree

Uso:

$ pstree [opções]

El comando pstree mostrará todo el árbol de procesos desde init hasta el último proceso en ejecución. Es similar al comando ps –auxf.

Es útil para entender la jerarquía de los procesos en Linux.

Además de las opciones a continuación, pstree podrá mostrar la jerarquía pertenciente a un usuario o de un proceso específico a través de su PID.

  • -a: Esta opción muestra la línea de comando utilizada para iniciar los procesos;
  • -c: Desactiva la función de fusionar los procesos idénticos en el mismo nivel de jerarquía;
  • -G: Utiliza el formato VT100 para mostrar las líneas entre los procesos en lugar de los caracteres de teclado;
  • -h: Resalta los procesos conectados al terminal en ese momento;
  • -p: Incluye el PID de los procesos en la lista.

Si quieres ver los procesos en ejecución de forma dinámica, como el "Administrador de tareas" de Windows, Linux tiene el comando top.

9. Comando top

Uso:

$ top [opções]

El comando top muestra los procesos en ejecución como el comando ps, pero actualizando la pantalla.

Este recurso es útil para monitorear cómo uno o más procesos actúan en el sistema. Este comando también ordena los procesos que utilizan más CPU en la parte superior de la pantalla.

Las opciones más utilizadas son:

  • -b: ejecutar en modo batch o archivo por lotes. Se utiliza para dirigir la salida del comando a otro proceso o a un archivo;
  • -d n: determina el tiempo de las actualizaciones de la pantalla en n segundos. El valor predeterminado es cinco segundos;
  • -n num: muestra el número de veces en pantalla las actualizaciones de los procesos en ejecución y luego termina. Útil para ser utilizado con la opción –b;
  • -q: ejecutar con actualizaciones en tiempo real. Esta opción debe utilizarse con precaución, ya que puede consumir una gran cantidad de CPU;
  • -u: monitorea los procesos en ejecución de un determinado usuario;
  • -p: monitorea un determinado proceso identificado por su PID. Más de un proceso puede ser definido con esta opción.

El comando top también puede soportar algunos comandos que alteran su comportamiento durante su ejecución. Son ellos:

  • Z: cambia el esquema de colores del top. Para que esta opción esté activa es necesario que el terminal soporte ANSI;
  • F: añade columnas con más opciones de monitoreo de los procesos;
  • u: muestra los procesos de un determinado usuario;
  • k: termina (kill) un determinado proceso;
  • r: cambia la prioridad de ejecución del proceso (renice);
  • R: cambia el orden de los procesos de acuerdo con la utilización de la CPU;
  • q: sale del modo interactivo del top.

Ahora que ya sabes listar los procesos, es hora de aprender a detener los procesos en ejecución con los comandos kill y killall.

Comandos para detener procesos en ejecución

Si tu objetivo es detener uno o más procesos que, en este momento, están en ejecución, simplemente prueba uno de estos comandos:

  • comando kill;
  • comando killall;
  • comando pkill;
  • o comando pgrep.

Todos ellos tienen el objetivo de detener o terminar tantos procesos como sea necesario de manera directa y elegante.

10. Comando kill

Uso:

$ kill [–sinal] PID

El comando kill envía señales a los procesos. Se usa generalmente para terminar la ejecución de procesos identificados por su PID.

Si ninguna señal específica se pasa como parámetro, kill enviará la señal TERM (15) para terminar el proceso de forma elegante.

11. Comando killall

Uso:

# killall [–sinal] NOME_DO_PROCESSO

El comando killall envía señales a los procesos y recibe como parámetro no el PID del proceso, sino su nombre.

Se usa generalmente para terminar la ejecución de procesos que tienen varios procesos hijos ejecutándose al mismo tiempo.

Si ninguna señal específica se pasa como parámetro, killall enviará la señal TERM (15) para terminar el proceso de forma elegante.

Es importante que entiendas la diferencia entre los comandos kill y killall. El primero envía señales a uno o más procesos identificados por el PID.

El segundo envía señales a todos los procesos en la cola de ejecución que tienen un determinado nombre.

Las señales enviadas por kill y por killall pueden pasarse por el nombre o por el número entero correspondiente.

12. Comando pkill

Uso:

# pkill [expressão]

El comando pkill es análogo al comando killall. Puede enviar señales a los procesos y recibe como parámetro una expresión o nombre del proceso.

Se usa generalmente para terminar la ejecución de procesos que tienen varios procesos hijos ejecutándose simultáneamente. $ pkill mysqld

13. Comando pgrep

El comando pgrep es una mezcla de ps con grep. Uso:

# pgrep [expressão]

El comando pgrep permite buscar expresiones en la lista de procesos en ejecución y devuelve el PID del proceso en cuestión.

Comandos Linux para control y acceso al sistema

Los comandos Linux para control y acceso al sistema son todos aquellos que realizan el inicio de sesión, el cierre y el cambio de sistemas.

Entre los principales comandos de este tipo, podemos mencionar:

  • exit: es el comando que finaliza la sesión en la línea de comandos;
  • logout: es el comando que cierra la sesión que se está utilizando, pero solo en C shell y en bash shell;
  • passwd: sirve para editar la contraseña del usuario conectado;
  • yppasswd: permite el cambio de contraseña del usuario en las páginas amarillas;
  • rlogin: se utiliza para iniciar sesión, de forma segura, en algún sistema Linux;
  • slogin: realiza el inicio de sesión en sistemas Linux de forma altamente segura;
  • ssh: sirve para abrir una sesión segura, principalmente en servidores remotos.

Comandos Linux para comunicación

Los comandos Linux también facilitan la comunicación de una empresa. Al insertar algunos códigos, es posible acceder a canales de comunicación de forma rápida y práctica.

Listamos a continuación los principales comandos de Linux para comunicación:

  • mail: comando que abre una interfaz para el intercambio de correos electrónicos;
  • mesg: sirve para permitir o no el intercambio de mensajes a través de la terminal entre computadoras activas en la red;
  • pine: también es útil para el envío y recepción de correos electrónicos;
  • talk: este comando permite conversar con otros usuarios de tu red;
  • write: sirve para enviar mensajes cortos a usuarios activos en tu red.

Principales comandos Linux

Los principales comandos Linux son aquellos más simples, que pueden ser aprendidos por usuarios principiantes.

Desde una terminal de lectura de comandos, proporcionada por el propio sistema Linux, es posible insertar los códigos de manera correcta y así realizar acciones rápidamente.

Separamos una lista de los principales comandos Linux para ti:

  • nano: edita archivos de texto, estilo bloc de notas;
  • watch: comando responsable de programar la repetición de algún otro comando;
  • script: es capaz de programar la ejecución de algunos comandos, con intervalo de tiempo o no;
  • cd: sirve para mostrar el directorio en el que un archivo está ubicado;
  • ls: comando que muestra todos los archivos existentes, así como los filtra por caracteres;
  • rm: elimina archivos de acuerdo con la aprobación del usuario;
  • find: también sirve para encontrar archivos, desde cualquier ubicación del computador.

Estos comandos poseen una serie de reglas y subcomandos para una ejecución más específica. Toda esta información está contenida en otro blog nuestro. ¡Haz clic aquí para consultar!

Comandos Linux para el día a día

Como se mencionó anteriormente, los comandos Linux ayudan en actividades cotidianas.

Conoce los principales comandos Linux para el día a día:

Comando rm

El comando rm es responsable de eliminar los archivos de sus respectivos directorios.

La acción puede realizarse de diferentes formas, de acuerdo con el subcomando seleccionado por el usuario. Entre las opciones están:

  • -f: elimina archivos sin pedir autorización;
  • -i: elimina el archivo y el directorio;
  • -r, -R: elimina el archivo conforme a la autorización del usuario;
  • -d, -dir: elimina directorios que están sin ningún archivo.

Comando ls

El comando ls muestra los archivos existentes, de acuerdo con un filtro de caracteres.

Los filtros se seleccionan a partir de subcomandos listados a continuación:

  • -color=auto: separa archivos por color;
  • -A, -almost-all: muestra archivos de todos los archivos, excepto de las entradas "." y "..";
  • -a, -all: muestra todos los archivos, ocultos o no;
  • -m: muestra los archivos separados por coma.

Comando cat

El comando cat se utiliza para abrir un archivo en específico. La sintaxis para usarlo es: cat [OPCIÓN] [ARCHIVO]. Un ejemplo básico sería cat archivo.txt.

Este comando posee muchas otras funcionalidades, que pueden ser accedidas a través del comando man cat !.

Comando vi

El comando vi funciona para activar un editor de texto con interfaz simple. Básicamente, a través de él es posible personalizar tu texto, editar y crear nuevos archivos.

Para entender más sobre sus demás variaciones, ¡lee nuestro blog!

Comando df

El comando df permite la visualización de la memoria ocupada en el disco duro en uso en ese momento.

Además de su uso más básico, existen subcomandos como df -a, que muestra el uso del disco duro e incluso información de sistemas ficticios.

Comando top

El comando top muestra información de almacenamiento del disco duro, principalmente la cantidad de memoria RAM.

Comando cd

Este comando tiene como finalidad mostrar en qué directorio se encuentra algún archivo o moverlo de un directorio a otro.
Es necesario construir el comando de acuerdo con el archivo que deseas visualizar. Para ello, ingresa cd [CARPETA/]. En caso de que el directorio exista, se abrirá en tu dispositivo.

Conoce más sobre los procesos Linux

Además de entender qué son los procesos Linux, es necesario entender su funcionamiento.

Existen varios factores que debemos tener en consideración para entender los comandos Linux.

A continuación, te enseñaremos más sobre los estados, las etapas de ejecución y los programas de los procesos Linux. 

¿Aún estás un poco confundido? Lee la secuencia que aclararemos todos los puntos aquí planteados. 

Comprende sobre los estados y la secuencia de ejecución de un proceso

Después de ser creado, el proceso recibe una clasificación, también llamada estado de ejecución, que define si será ejecutado de inmediato o tardíamente.

Estas clasificaciones sirven para priorizar, de hecho, las ejecuciones e impedir que procesos menos importantes interfieran en aquellos esenciales.

Pensando en ello, sepa que existen 4 estados principales de los procesos de Linux:

  • Ejecutable;
  • En espera;
  • Detenido;
  • y Zombi.

Necesitas conocer cuidadosamente cada proceso para administrar las secuencias de manera asertiva.

Ejecutable

Como el propio nombre sugiere, un proceso ejecutable es aquel que está apto para ser ejecutado instantáneamente.

En inglés, "running", este proceso está preparado para la ejecución y puede ser liberado sin mayores problemas, de manera casi natural.

Pasa a formar parte de la cola de "ready queue", o listos para ejecutarse, únicamente esperando su activación a través de un determinado comando.

En espera

Diferentemente del anterior, el proceso en espera o "interruptible sleep", en inglés, está inactivo únicamente esperando que algo ocurra para que sea ejecutado.

De manera literal, este proceso está dormido hasta que algún comando lo despierte para realizar su función en el momento adecuado.

A diferencia de los procesos ejecutables, que vimos anteriormente, este tipo de proceso no consume ningún recurso de la CPU y permanece inactivo por tiempo determinado en otra cola.

A partir del momento en que este proceso termine su tiempo de sueño ("sleep"), vuelve a la "ready queue".

Detenido

Como el propio nombre sugiere, el proceso detenido está, literalmente, detenido o congelado. Él no está en ejecución en este momento.

El nombre original de este proceso es "stopped" o "suspended", y es resultado del comando "stop" solicitado por el usuario.

Cuando el usuario emite otro comando, pidiendo terminar la acción ("resume"), este proceso vuelve a la lista de espera o "ready queue".

Zombis

Es posible, dentro de una jerarquía de procesos, que un determinado proceso hijo termine por algún motivo inesperado, y el proceso padre se convierta en un proceso zombi o difunto (defunct).

Los procesos zombi no pueden ser terminados con el comando kill, porque ya no existen más.

Esto ocurre porque cada proceso creado recibe un lugar en la tabla de procesos del Kernel. Cuando termina, su lugar en la tabla del Kernel recibe el resultado de su ejecución.

El resultado de la ejecución se retiene en la tabla hasta que alguien lo consulte cuando, entonces, es removido de la tabla.

El estado del proceso se llama "zombi" cuando el mismo termina y su resultado aún no ha sido retirado de la tabla del Kernel.

Otra posibilidad especial es cuando un proceso cualquiera que creó nuevos procesos hijos que ejecutan bajo su jerarquía termina inesperadamente.

En este caso, los procesos hijos pierden su proceso padre y son adoptados por el proceso init (PID 1) que es el padre de todos los procesos. Observe la jerarquía entre los procesos con el comando pstree –c –p.

Estas dos situaciones descritas no son normales y pueden ser causadas por errores en los programas.

Atributos de los procesos (programas) en Linux

Es importante que entiendas que cada programa es al menos un proceso y que cada proceso posee algunos atributos, tales como:

Process ID (PID) o identificación del proceso

Cada proceso posee un número de identificación único. El primer proceso init siempre tendrá el PID 1 y para el resto de los procesos este número se incrementa a medida que nuevos procesos son ejecutados;

User ID e Group ID (ID del usuario e ID del grupo)

Los procesos necesitan ser ejecutados con los privilegios de una cuenta de usuario y del grupo asociado a ellos. Esto es importante porque así el sistema puede determinar y gestionar el acceso a los recursos;

Proceso Padre

En Linux ningún proceso es ejecutado de forma independiente de los otros. Todos los procesos en el sistema, con excepción del init, poseen un proceso padre, responsable de su ejecución.

El atributo ParentID graba el PID del proceso padre. En caso de que el proceso padre termine su ejecución antes del proceso hijo, el proceso hijo es "apadrinado" por init, obteniendo el Parent ID igual a 1;

Variables de entorno

Cada proceso hereda del proceso padre algunas variables de entorno que simplemente guardan algunos valores que pueden o no ser importantes para el proceso en ejecución.

Es posible que durante su ejecución un proceso modifique, incremente o elimine una variable de entorno.

Un proceso hijo puede heredar las variables de un proceso padre. Pero un proceso padre no puede acceder a las variables creadas o modificadas por sus hijos.

Directorio de trabajo

Los procesos también están asociados a un directorio de trabajo, donde pueden realizar la lectura y la escritura del disco;

Temporizadores

El Kernel mantiene registros de la hora en que los procesos son creados así como el tiempo de CPU que consumen durante su ejecución.

Certificación Linux: cursos en Linux con estructura totalmente didáctica y aplicable. Impulsa tu carrera. ¡Haz clic y descubre más!

Conclusión

¿Notaste cómo es importante conocer todos los principales comandos para ejecutar procesos Linux?

Crear, verificar, pausar y gestionar los procesos en Linux es esencial para el funcionamiento adecuado del procesamiento y del sistema y, además, para el éxito de tu trabajo.

Solo así es posible garantizar la mejor ejecución posible, de manera optimizada y equilibrada en tu Linux.

Si te gustó el contenido, necesitas ver todos los demás disponibles aquí mismo, en el Blog Certificación Linux.

Todos los artículos tienen el mismo objetivo: ayudarte a convertirte en un profesional cada vez más actualizado, competente y desarrollado, capaz de conquistar un espacio significativo en el mercado laboral.

Uira Ribeiro

Prof. Uirá Ribeiro

Chair do Board do Linux Professional Institute

Después de años viendo profesionales perder horas en tareas simples por no conocer las herramientas correctas de Linux, decidí enseñar.
Hoy soy autor de la mayoría de los Materiales de Aprendizaje oficiales de la LPI y mentor de más de 14,000 alumnos certificados.

Conoce mi historia completa →

Eso fue solo una pieza. El curso enseña el camino completo — desde tu primer comando hasta el día del examen.

Certificação Linux — a plataforma líder em certificações Linux no Brasil
WhatsApp