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
Table of Contents
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 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 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 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
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 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 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
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-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:
- 20 Herramientas de línea de comandos para monitorear el desempeño de Linux mance
- 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 de Linux
Para aprender a usar estos comandos en profundidad, para matar/terminar procesos activos en Linux, abre la l tintas a continuación:
- Una guía para los comandos Kill, Pkill y Killall para terminar los procesos de Linux
- 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
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
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.
- Administración de procesos de Linux: arranque, apagado y todo lo demás
- Encuentre los 15 procesos principales por uso de memoria con ‘top’ en modo por lotes
- Encuentre los procesos en ejecución principales por uso de CPU y memoria más alto en Linux
- 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.