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

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

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

Un proceso. se refiere a un programa en ejecución; es una instancia en ejecución de un programa. Se compone de 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

Existen fundamentalmente dos tipos de procesos en Linux:

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

¿Qué son los demonios?

Estos son tipos especiales de procesos en segundo plano que comienzan en el inicio del sistema y continúan ejecutándose para siempre como un servicio; no mueren. Se inician como tareas del sistema (se ejecutan como servicios), de forma espontánea. Sin embargo, un usuario puede controlarlos a través del proceso de inicio.

Estado del proceso de Linux  Estado del proceso de Linux Estado del proceso de Linux

Creación de un proceso en Linux

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

freestar.config.enabled_slots.push

Hay dos formas convencionales que se utilizan 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 riesgos de seguridad significativamente determinados.
  • Uso de la función fork () y exec (). esta técnica es un poco avanzada pero ofrece mayor flexibilidad, velocidad y seguridad.

¿Cómo identifica Linux los procesos?

Debido a que Linux es un sistema multiusuario, lo que significa que diferentes usuarios pueden ejecutar varios programas en el sistema, cada instancia en ejecución de un programa debe ser identificado únicamente por el kernel.

Y un programa se identifica por su ID de proceso ( PID. así como su ID de proceso principal ( PPID. , por lo tanto, los procesos se pueden clasificar en:

  • Procesos principales. estos son procesos que crean otros procesos durante el tiempo de ejecución.
  • Procesos secundarios. estos procesos son creados por otros procesos durante el tiempo de ejecución.

El proceso de inicialización

El proceso de inicialización. es la madre (padre) de todos los procesos del sistema, es el primer programa que se ejecuta cuando se inicia el sistema Linux; gestiona todos los demás procesos del sistema. Lo inicia el propio kernel, por lo que en principio no tiene un proceso padre.

El proceso init siempre tiene el ID de proceso 1. Funciona como padre adoptivo para todos los procesos huérfanos.

Puede usar el comando pidof. para encontrar el ID de un proceso:

# pidof systemd # pidof top # pidof httpd  Encuentra el ID de proceso de Linux  Encontrar ID de proceso de Linux Encontrar ID de proceso de Linux

Para encontrar la ID de proceso y la ID de proceso principal del shell actual, correr:

$ echo $$ $ echo $ PPID  Buscar ID de proceso principal de Linux  Buscar ID de proceso principal de Linux Buscar proceso principal de Linux ID 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 en primer plano (interactivo) de la siguiente manera, se conectará al terminal y un usuario puede enviarlo como entrada:

# cloudcmd  Iniciar el proceso interactivo de Linux  Iniciar proceso interactivo de Linux Iniciar el proceso interactivo de Linux Trabajos en segundo plano de Linux

Para iniciar un proceso en segundo plano (no interactivo), utilice el símbolo &, aquí, el proceso no lee la entrada de un usuario hasta que se mueva al primer plano.

# cloudcmd & # jobs Iniciar el proceso de Linux en segundo plano  Iniciar el proceso de Linux en segundo plano Iniciar el proceso de Linux en segundo plano

También puedes enviar un proceso a segundo plano suspendiéndolo usando [Ctrl + Z], esto enviará la señal SIGSTOP. al proceso, deteniendo así sus operaciones; se vuelve inactivo:

# tar-cf backup.tar/backups/* #press Ctrl + Z. # trabajos

Para continuar ejecutando el comando suspendido anteriormente en segundo plano, use el Comando bg.

# bg

Para enviar un proceso en segundo plano al primer plano, use el comando fg. junto con el ID del trabajo así:

# trabajos # fg% 1  Proceso en segundo plano de Linux Empleos  Trabajos del proceso en segundo plano de Linux Trabajos del proceso en segundo plano de Linux

También te puede interesar: Cómo empezar Comando de Linux en segundo plano y proceso de desconexión en la terminal

Estados de un Pr 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:

  • En ejecución. 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).
  • En espera. en este estado, un proceso está esperando que ocurra un evento o un recurso del sistema. Además, el kernel también diferencia entre dos tipos de procesos de espera; Los procesos de espera interrumpibles-pueden ser interrumpidos por señales y los procesos de espera ininterrumpida-están esperando directamente en las condiciones del hardware y no pueden ser interrumpidos por ningún evento/señal.
  • Detenido. en este estado, un proceso se ha detenido, normalmente al recibir 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 procesos.

Cómo ver procesos activos en Linux

Hay varias herramientas de Linux para ver/listar procesos en ejecución en el sistema, los dos tradicionales y bien conocidos son los comandos ps y top:

1. ps Comando

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  Lista de procesos activos de Linux 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:

# top Lista de procesos en ejecución de Linux Lista de procesos en ejecución de Linux Lista de procesos en ejecución de Linux

Lea esto para ver más ejemplos de uso principales: 12 ejemplos de comandos TOP en Linux

3. Glances-Herramienta de monitoreo del sistema

Glances. es una herramienta de monitoreo del sistema relativamente nueva con características avanzadas:

# miradas Glances-Monitorización de procesos de Linux  Glances-Monitoreo de procesos de Linux Glances-Monitoreo de procesos de Linux

Para una guía de uso completa, 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 enlace a continuación para leer más sobre ellos:

  1. 20 Herramientas de línea de comandos para monitorear el desempeño de Linux mance
  2. 13 Herramientas de monitoreo de Linux más útiles

Cómo controlar 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 tecmint miradas $ pkill miradas $ pgrep-u tecmint echa un vistazo  Control de procesos Linux  Control de procesos de Linux Control de procesos de Linux

Para aprender a usar estos comandos en profundidad, para matar/terminar procesos activos en Linux, abre la l tintas a continuación:

  1. Una guía para los comandos Kill, Pkill y Killall para terminar los procesos de Linux
  2. Cómo encontrar y eliminar los procesos en ejecución en Linux

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

Envío de señales a procesos

La forma fundamental de controlar los procesos en Linux es enviándoles señales. Hay varias señales que puede enviar a un proceso, para ver todas las señales que se ejecutan:

$ kill-l  Lista de todas las señales de Linux  Lista de todas las señales de Linux Lista de todas las señales de Linux

Para enviar una señal a un proceso, use los comandos kill, pkill o pgrep que mencionado anteriormente. Pero los programas solo pueden responder a señales si están programados para reconocer esas señales.

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

  • SIGHUP 1. se envía a un proceso cuando su terminal de control está cerrada.
  • 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 salida [Ctrl + D].
  • SIGKILL 9. esta señal termina inmediatamente (mata) un proceso y el proceso no realizará ninguna limpieza-up.
  • SIGTERM 15. esta es una señal de finalización del programa (kill enviará esto por defecto).
  • SIGTSTP 20. enviado a un proceso por su terminal de control para solicitarle que se detenga (parada del 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 OR $ kill-KILL 2687 OR $ kill-SIGKILL 2687

Para matar una aplicación usando su nombre, use pkill o killall así:

$ pkill firefox $ killall firefox Cambiando la prioridad del proceso de Linux

En el Sistema Linux, todos los procesos activos tienen una 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 de root puede influir en esto con nice. y renice. comandos.

Desde la salida del comando top, el NI muestra el valor agradable del proceso:

$ top Lista de procesos en ejecución de Linux  Lista de procesos en ejecución de Linux Lista de procesos en ejecución de Linux

Utilice el comando nice. para establecer un valor agradable 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 root puede usar valores agradables negativos.

Para renice. la prioridad de un proceso, use el comando renice. 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. Administración de procesos de Linux: arranque, apagado y todo lo demás
  2. Encuentre los 15 procesos principales por uso de memoria con ‘top’ en modo por lotes
  3. Encuentre los procesos en ejecución principales por uso de CPU y memoria más alto en Linux
  4. Cómo encontrar un nombre de proceso usando un número PID en Linux

¡Eso es todo por ahora! Si tiene alguna pregunta o idea adicional, compártala con nosotros a través del formulario de comentarios a continuación.