Todo lo que necesita saber sobre procesos en Linux [Guía integral]

Todo lo que necesita saber sobre procesos en Linux [Guía integral]

En este artículo, recorreremos una comprensión básica de los procesos y veremos brevemente cómo administrar los procesos en Linux utilizando ciertos comandos.

A proceso se refiere a un programa en ejecución; Es una instancia en ejecución de un programa. Está compuesto por la instrucción del programa, los datos leídos de los archivos, otros programas o la entrada de un usuario del sistema.

Tipos de procesos

Hay fundamentalmente dos tipos de procesos en Linux:

  • Procesos en primer plano (también conocidos como procesos interactivos): estos se inicializan y controlan a través de una sesión terminal. En otras palabras, debe haber un usuario conectado al sistema para iniciar tales procesos; no han comenzado automáticamente como parte de las funciones/servicios del sistema.
  • Procesos de fondo (también conocidos como procesos no interactivos/automáticos) son procesos no conectados a un terminal; No esperan ninguna entrada del usuario.

Que es demonios

Estos son tipos especiales de procesos de fondo que comienzan al inicio del sistema y siguen funcionando para siempre como un servicio; Ellos no mueren. Se inician como tareas del sistema (se ejecutan como servicios), espontáneamente. Sin embargo, un usuario los puede controlar a través del proceso de inicio.

Estado de proceso de Linux

Creación de un procesos en Linux

Normalmente se crea un nuevo proceso cuando un proceso existente hace una copia exacta de sí misma en la memoria. El proceso infantil tendrá el mismo entorno que su padre, pero solo el número de identificación del proceso es diferente.

Hay dos formas convencionales utilizadas para crear un nuevo proceso en Linux:

  • Uso de la función System () - Este método es relativamente simple, sin embargo, es ineficiente y tiene significativamente ciertos riesgos de seguridad.
  • Uso de la función FORK () y EXEC () - Esta técnica es un poco avanzada pero ofrece una mayor flexibilidad, velocidad, junto con la seguridad.

¿Cómo identifica los procesos de Linux??

Debido a que Linux es un sistema de usuarios múltiples, lo que significa que los diferentes usuarios pueden ejecutar varios programas en el sistema, cada instancia en ejecución de un programa debe ser identificada de manera única por el kernel.

Y un programa se identifica por su identificación de proceso (Pid) así como su identificación de procesos principales (Ppid), por lo tanto, los procesos se pueden clasificar en:

  • Procesos para padres - Estos son procesos que crean otros procesos durante el tiempo de ejecución.
  • Procesos para niños - Estos procesos son creados por otros procesos durante el tiempo de ejecución.

El proceso init

En eso El proceso es la madre (padre) de todos los procesos en el sistema, es el primer programa que se ejecuta cuando el sistema de Linux se inicia; administra todos los demás procesos en el sistema. Es iniciado por el núcleo mismo, por lo que, en principio, no tiene un proceso principal.

El proceso de inicio siempre tiene una identificación de proceso de 1. Funciona como un padre adoptivo para todos los procesos huérfanos.

Puedes usar el comando pidof Para encontrar la identificación de un proceso:

# Pidof Systemd # Pidof Top # Pidof Httpd 
Encontrar la identificación del proceso de Linux

Para encontrar la identificación del proceso y la ID de proceso principal del shell actual, ejecute:

$ Echo $$ $ ECHO $ ​​PPID 
Encuentra la identificación del proceso principal de Linux

Iniciar un proceso en Linux

Una vez que ejecute un comando o programa (por ejemplo, CloudCMD - CloudCommander), iniciará un proceso en el sistema. Puede iniciar un proceso de primer plano (interactivo) de la siguiente manera, se conectará al terminal y un usuario puede enviarlo:

# CloudCMD 
Iniciar proceso interactivo de Linux

Trabajos de fondo de Linux

Para comenzar un proceso en segundo plano (no interactivo), use el Y Símbolo, aquí, el proceso no lee la entrada de un usuario hasta que se mueve al primer plano.

# CloudCMD & # Jobs 
Iniciar el proceso de Linux en el fondo

También puede enviar un proceso al fondo suspendiéndolo usando [CTRL + Z], Esto enviará el Signo señal al proceso, deteniendo así sus operaciones; se vuelve inactivo:

# copia de seguridad de tar -cf.alquitrán /copias de seguridad /* #Press Ctrl+Z # trabajos 

Para continuar ejecutando el comando arriba superpuesto en segundo plano, use el BG dominio:

# BG 

Para enviar un proceso de fondo en primer plano, use el FG comandar junto con la identificación de trabajo como así:

# trabajos # fg %1 
Trabajos de proceso de fondo de Linux

También puede que le guste: Cómo iniciar el comando Linux en el fondo y separar el proceso en la terminal

Estados de un proceso en Linux

Durante la ejecución, un proceso cambia de un estado a otro dependiendo de su entorno/circunstancias. En Linux, un proceso tiene los siguientes estados posibles:

  • Correr - Aquí se está ejecutando (es el proceso actual en el sistema) o está listo para ejecutarse (está esperando ser asignado a una de las CPU).
  • Espera - En este estado, un proceso está esperando que ocurra un evento o para un recurso del sistema. Además, el núcleo también diferencia entre dos tipos de procesos de espera; Los procesos de espera interrumpibles, pueden ser interrumpidos por señales y procesos de espera ininterrumpidos, están esperando directamente en las condiciones de hardware y no pueden ser interrumpidos por ningún evento/señal.
  • Interrumpido - En este estado, se ha detenido un proceso, generalmente recibiendo una señal. Por ejemplo, un proceso que se está depurando.
  • Zombi - Aquí, un proceso está muerto, se ha detenido pero todavía tiene una entrada en la tabla de proceso.

Cómo ver los procesos activos en Linux

Existen varias herramientas de Linux para ver/listar procesos en ejecución en el sistema, los dos comandos PS y bien conocidos son PS y Top:

1. comando PS

Muestra información sobre una selección de los procesos activos en el sistema como se muestra a continuación:

# ps # ps -e | cabeza 
Lista de procesos activos de Linux

2. Top - Herramienta de monitoreo del sistema

TOP es una herramienta poderosa que le ofrece una vista dinámica en tiempo real de un sistema en ejecución como se muestra en la captura de pantalla a continuación:

# arriba 
Lista de procesos de ejecución de Linux

Lea esto para obtener más ejemplos de uso superior: 12 ejemplos de comando superiores en Linux

3. miradas - herramienta de monitoreo del sistema

miradas es una herramienta de monitoreo de sistemas relativamente nueva con características avanzadas:

# miradas 
Miradas - monitoreo de procesos de Linux

Para una guía de uso integral, lea: Glances: una herramienta avanzada de monitoreo del sistema en tiempo real para Linux

Hay varias otras herramientas útiles de monitoreo del sistema Linux que puede usar para enumerar los procesos activos, abra el siguiente enlace para leer más sobre ellas:

  1. 20 Herramientas de línea de comando para monitorear el rendimiento de Linux
  2. 13 Herramientas de monitoreo más útiles de Linux

Cómo controlar los procesos en Linux

Linux también tiene algunos comandos para controlar procesos como Kill, Pkill, PGREP y Killall, a continuación se muestran algunos ejemplos básicos de cómo usarlos:

$ PGREP -U TECMINT TOP $ KILL 2308 $ PGREP -U TECMINT TOP $ PGREP -U GLANCES DE TECMINT $ PKILL GLANCES $ PGREP -U TECMINT GISTAS 
Control de procesos de Linux

Para aprender cómo usar estos comandos en profundidad, para matar/terminar procesos activos en Linux, abra los enlaces a continuación:

  1. Una guía para Kill, Pkill y Killall ordena para terminar la processora de Linux
  2. Cómo encontrar y matar procesos de ejecución en Linux

Tenga en cuenta que puede usarlos para matar aplicaciones que no respondan en Linux cuando su sistema se congela.

Enviar señales a los procesos

La forma fundamental de controlar procesos en Linux es enviando señales a ellos. Hay varias señales que puede enviar a un proceso, para ver todas las señales ejecutadas:

$ Kill -l 
Enumere todas las señales de Linux

Para enviar una señal a un proceso, use los comandos Kill, Pkill o PGREP que mencionamos anteriormente en. Pero los programas solo pueden responder a las señales si están programados para reconocer esas señales.

Y la mayoría de las señales son para uso interno por el sistema, o para programadores cuando escriben código. Las siguientes son señales que son útiles para un usuario del sistema:

  • Suspiro 1 - enviado a un proceso cuando se cierra su terminal de control.
  • Sigint 2 - enviado a un proceso por su terminal de control cuando un usuario interrumpe el proceso presionando [Ctrl+C].
  • Sigquit 3 - enviado a un proceso si el usuario envía una señal de abandono [CTRL+D].
  • Sigkill 9 - Esta señal termina (mata) inmediatamente un proceso y el proceso no realizará ninguna operación de limpieza.
  • Sigter 15 - Esta es una señal de terminación del programa (Kill enviará esto por defecto).
  • Sigtstp 20 - enviado a un proceso por su terminal de control para solicitar que se detenga (parada terminal); iniciado por el usuario presionando [CTRL+Z].

Los siguientes son ejemplos de comandos de matar para matar la aplicación Firefox usando su PID una vez que se congela:

$ Pidof Firefox $ Kill 9 2687 o $ Kill -Kill 2687 o $ Kill -Sigkill 2687 

Para matar una aplicación usando su nombre, use Pkill o Killall como así:

$ Pkill Firefox $ Killall Firefox 

Cambiar la prioridad del proceso de Linux

En el sistema Linux, todos los procesos activos tienen prioridad y cierto valor agradable. Los procesos con mayor prioridad normalmente obtendrán más tiempo de CPU que los procesos de menor prioridad.

Sin embargo, un usuario del sistema con privilegios raíz puede influir en esto con el lindo y re bueno comandos.

Desde la salida del comando superior, el Ni muestra el proceso de buen valor:

$ top 
Lista de procesos de ejecución de Linux

Utilizar el lindo comando establecer un buen valor para un proceso. Tenga en cuenta que los usuarios normales pueden atribuir un buen valor de cero a 20 a los procesos que poseen.
Solo el usuario de la raíz puede usar valores negativos agradables.

A re bueno la prioridad de un proceso, use el re bueno Comando de la siguiente manera:

$ Renice +8 2687 $ Renice +8 2103 

Consulte nuestros artículos útiles sobre cómo administrar y controlar los procesos de Linux.

  1. Gestión de procesos de Linux: arranque, apagado y todo lo demás
  2. Encuentre los 15 mejores procesos mediante el uso de la memoria con 'superior' en modo lotes
  3. Encuentre los procesos de ejecución superior por el uso de memoria y CPU más alto en Linux
  4. Cómo encontrar un nombre de proceso usando el número PID en Linux

Eso es todo por ahora! ¿Tiene alguna pregunta o idea adicional, compártalas con nosotros a través del formulario de comentarios a continuación?.