Qué son los procesos en linux y cómo identificarlos

Qué son los procesos en linux y cómo identificarlos.

Procesos, procesos, procesos, qué son los procesos. En este artículo, explicamos qué son los procesos en Linux.

También conoceremos los aspectos más simples del manejo y, la gestión de procesos mediante comandos o herramientas simples que todos conocemos.

 

Qué son los procesos en linux y cómo identificarlos

Qué son los procesos

Tal vez no eres consciente, pero cuando ejecutamos un comando, herramienta, aplicación, software, etc, en Linux, se genera (como mínimo) un nuevo proceso.

Para los más profanos, podríamos decir que es como un software que trabaja en el interior de un sistema operativo. Esta tarea tiene su forma independiente de trabajar, una misión exclusiva, y sus propios permisos. Datos e instrucciones de cómo proceder, contador, registros, y otros parámetros es lo que incluye un proceso.

Durante el tiempo que dure el proceso hará uso de los recursos del sistema, la CPU para ejecutar sus instrucciones propias, y de la memoria ram para almacenar datos. Es evidente que también utiliza los archivos propietarios del sistema, además de interactuar con los dispositivos de almacenamiento.

Los procesos permiten la interacción con el sistema para que la gestión sea a nivel superior, mientras tanto el kernel de Linux se encarga del nivel inferior.

 

PID (número de identificación del proceso)

Linux asigna un número único de cinco dígitos a cada proceso. Al número generado se le conoce como PID (número de identificación de proceso), y es una manera excelente para identificar los procesos, ya que no es posible tener dos PID iguales, cada proceso tiene su número exclusivo hasta que muera.

Si quieres saber el PID (pueden ser varios) de un proceso específico, es tan sencillo como ejecutar el siguiente comando (debes saber el nombre):

Procesos ejemplo del navegador chomium

Existen otras alternativas, pero este comando es el más sencillo y fácil de usar.

 

Tipos de procesos

En linux nos encontramos con dos tipos de procesos.

  • Background processes
  • Frontend processes
Background processes

Se conocen como «Background processes» (procesos en segundo plano), a los procesos automáticos o no interactivos. Este tipo de procesos inician automáticamente sin intervención del usuario, tampoco requieren ninguna respuesta del mismo. Estos procesos son independientes, y una vez son creados harán su trabajo sin ninguna interacción con la entidad que los originó. Un ejemplo claro lo tenemos con los demonios y servicios del sistema.

Frontend processes

Los «Frontend processes» son procesos interactivos, para que me entiendas… fueron iniciados o lanzados por algún usuario. Un ejemplo claro son los comandos que ejecutamos en la terminal, siempre comienzan en primer plano. Otros procesos frontend son los que se inician desde interfaces gráficas, y permiten interactuar con ellos.

 

Procesos primarios y procesos secundarios

Es algo normal que varios usuarios trabajen simultáneamente en Linux, cada uno usa diferentes aplicaciones y comandos. Para poder diferenciar las instancias de ejecución, el núcleo identifica cada una de ellas.

Entonces los procesos se dividen en procesos primarios (también llamados padre), que son procesos que generan otros procesos en tiempo de ejecución, y los procesos secundarios (también llamados hijo) que son creados por otros procesos en ejecución.

Un detalle a tener en cuenta es, que cuando un proceso hijo se elimina antes que su padre, se convierte en un proceso zombi hasta que el primario informe al núcleo de su estado actual.

El problema puede surgir si el proceso primario finaliza antes que el secundario, en este caso el proceso hijo puede ser adoptado por init o por otro proceso diferente. Esto repercute negativamente en el rendimiento del sistema.

 

Estados de un proceso

Es importante entender los estados de un proceso, su ciclo de vida, y cómo los núcleos de la CPU lo tratan. En Linux tenemos los siguientes estados:

  • Running/Runnable – (R): Son los procesos en ejecución que están haciendo uso de la CPU.
  • Waiting (o sleeping): Son los procesos que están a la espera de que un recurso específico esté disponible (por ejemplo, E / S ), o que suceda algo esperado. Estos se pueden clasificarse en:
    a – procesos de espera cuya tarea pueden ser interrumpida por señales, o asesinados antes de que se termine su trabajo.
    b – procesos de espera cuyo trabajo no puede ser interrumpido por ninguna señal o evento.
  • Stopped: Un proceso se detiene al recibir la señal SIGSTOP. La ejecución del proceso se suspende y solo administrará las señales SIGKILL y SIGCONT. Por ejemplo, un proceso que se está depurando se encuentra Stopped (detenido).
  • Zombie: En este caso el proceso no está vivo ni muerto. Simplemente termino su tarea con un exit (), pero está esperando su entrada a la tabla de procesos.

 

El proceso init

En linux el proceso init es el padre de todos los procesos. Es el primer proceso en iniciar cuando arranca Linux. Su función principal es importantísima, ya que es el encargado de crear el resto de procesos a partir de /etc inittab. No tiene proceso padre lo inicia el kernel, por tanto no se puede matar.

 

Ver los procesos en ejecución

Existen muchas herramientas y comandos para ver los procesos que se están ejecutando actualmente, como htop, top, etc. Pero sin duda alguna el mejor para esta tarea es, el comando ps.

ejemplo…

 

Prioridad de los procesos

En Linux, todos los procesos tienen una prioridad de ejecución. Los procesos con una mayor prioridad obtienen más CPU que otros con una menor prioridad, todo depende de su importancia para el sistema.

En este ejemplo utilizamos la herramienta htop para conocer la prioridad de los procesos, la columna NI indica su valor:

Prioridad de procesos con Htop en la columna NI

Prioridad de procesos con Htop en la columna NI

Si eres root puedes modificar la prioridad de un proceso con el siguiente comando.

También es posible ejecutar un comando o aplicación con una prioridad definida.

 

Conclusión

Independientemente de que uses la terminal o la GUI, siempre tendrás procesos activos. Pueden estar corriendo, detenidos, durmiendo o como zombis. Existen muchas herramientas que permiten ver y administrar los procesos.

El comando kill se encarga de terminar procesos.

Aprender a administrar los procesos es una tarea importante que debes manejar con soltura, independientemente del nivel de conocimientos que tengas.

 

Canales de Telegram: Canal SoloLinux – Canal SoloWordpress

Espero que este articulo te sea de utilidad, puedes ayudarnos a mantener el servidor con una donación (paypal), o también colaborar con el simple gesto de compartir nuestros artículos en tu sitio web, blog, foro o redes sociales.

 

2 Comentarios

  1. Henry
    15/02/2020
    • Sergio G.B.
      15/02/2020

Agregar comentario