Está en la página 1de 6

Gestión de procesos en Linux

Un proceso en Linux es, en resumen, un programa en ejecución. Un proceso puede crear a


su vez otros procesos. Al proceso que genera otro proceso se le llama proceso padre. Al
proceso generado por otro proceso se le llama proceso hijo. Los procesos pueden ser padres
e hijos y además, varios procesos pueden ser hijos del mismo padre a la vez. Veamos un
ejemplo.
El terminal o consola es un proceso, ya que se trata de un programa que ejecutamos. Si en el
terminal escribimos, por ejemplo, el comando “ls -l”, se estaría generando un nuevo proceso
que sería proceso hijo del terminal. En este caso el shell sería el proceso padre y el comando
“ls -l” sería el proceso hijo.

Trabajando con procesos. El comando ps.

El comando ps proporciona información sobre los procesos que se están ejecutando en el


sistema. Si escribimos en el terminal “ps”, obtendremos como salida un listado de los
procesos lanzados con el usuario actual que aún se están ejecutando.

Veamos qué significan cada una de las columnas que se muestran cuando ejecutamos el
comando ps.

 La primera columna es el PID o identificador de proceso. Cada proceso tiene un


asociado identificador que es único, es decir que no puede haber dos procesos con el
mismo identificador.
 La segunda columna nos informa del terminal en el que se está ejecutando el
proceso. Si aparece una interrogación (?), el proceso no tiene asociada ninguna
terminal.
 La tercera columna indica el tiempo total que ha estado ejecutándose el proceso.
 La cuarta columna es el nombre del proceso.

En la imagen anterior observamos que hay dos procesos corriendo: el bash, que es el shell o
intérprete de comandos, y el comando ps.

El comando ps admite algunos parámetros/modificadores:

-e devuelve un listado de todos los procesos que se están ejecutando.

-f devuelve un listado extendido. En este último caso veremos en pantalla el PPID del
proceso (identificador del proceso padre) y la hora en la que se ejecutó el proceso (STIME).

1
-ef obtendríamos un listado extendido de todos los procesos que se están ejecutando en el
sistema.

-u informa de los procesos lanzado por un determinado usuario. De tal forma que si
escribimos “ps -u milton”, aparecerá un listado de los procesos que está ejecutando el
usuario milton.

El comando pstree

El comando pstree visualiza, en forma de árbol, todos los procesos del sistema. Así
podemos ver las relaciones que existen entre los procesos.

El comando top

El comando top devuelve un listado de los procesos de forma parecida a como lo hace ps,
con la diferencia que la información mostrada se va actualizando periódicamente lo que nos
permite ver la evolución del estado de los procesos. Además, en la parte superior muestra
información adicional, como el espacio en memoria ocupado por los procesos, el espacio
ocupado por la memoria de intercambio o swap, el número total de tareas o procesos que se
están ejecutando, el número de usuarios o el porcentaje de uso del procesador.
Aunque el tema de las prioridades de los procesos lo trataremos más adelante, mientras el
comando top está en marcha podremos cambiar fácilmente la prioridad de los procesos. A
modo de resumen cada proceso en Linux tiene un nivel de prioridad que va de -20 (prioridad
más alta) hasta 20 (prioridad más baja). Cuanto mayor sea el nivel de prioridad, más
lentamente se ejecutará el proceso. ¿Y cómo podemos cambiar con top la prioridad de un
proceso? Muy sencillo. Con el comando top en marcha pulsamos la tecla „r‟. A continuación
introducimos el PID del proceso al que vamos a cambiar la prioridad, y acto seguido el nivel
de prioridad que vamos a asignar. Debemos tener en cuenta una consideración, solamente el
superusuario „root‟ puede asignar valores negativos a la prioridad de un proceso.

Procesos en primer plano y segundo plano

Los procesos pueden ejecutarse en primer plano o segundo plano. El proceso que está en
primer plano es aquel con el que se interactúa. Si ejecutamos, por ejemplo, el comando ls -l,
se mostrará por pantalla el resultado, y hasta que no acabe de mostrarse el listado no
podremos ejecutar ningún otro comando. En este caso el terminal permanece bloqueado, sin
poder introducir ningún otro comando, hasta que el proceso en primer plano termine.

Pondremos un proceso en segundo plano añadiendo el símbolo ampersand (&) al final del
comando. Cuando se ejecuta un proceso en segundo plano, se permite al usuario iniciar y
trabajar con otros procesos. Ejemplo:

$ sleep 10 &

El comando sleep simplemente espera el número de segundos que le pasemos como


parámetro.
En la imagen anterior se observa que al ejecutar un proceso en segundo plano se devuelve
un número entre corchetes seguido de otro número. El número entre corchetes indica el
número de procesos que se tienen ejecutándose en segundo plano. El segundo número es el
PID o identificador del proceso.

Para ver que trabajos se están ejecutando en segundo plano, se usa el comando jobs.

El signo + seguido del número de trabajo entre corchetes indica el trabajo más reciente que
se está ejecutando. El signo menos indica el siguiente trabajo más reciente.

Pasar procesos en segundo plano a primer plano

Para pasar procesos en segundo plano a primer plano, se utiliza el comando fg, seguido de
%n, donde n es el número de proceso que queremos pasar a primer plano. Por ejemplo, fg
%1 pondría en primer plano la tarea número 1. En la siguiente imagen se ejecuta sleep 80 en
segundo plano, y después pasa a primer plano con el comando fg.

Pasar procesos en primer plano a segundo plano

El comando bg permite pasar procesos desde primer plano a segundo plano. Para pasar un
proceso que se encuentra en primer plano a segundo plano, debemos suspenderlo primero
utilizando la combinación de teclas Ctrl+Z. Cuando se pulsa esa combinación de teclas, el
proceso en ejecución se para y no vuelve a ejecutarse hasta que se pasa a primer o
segundo plano. Con bg pasaremos el proceso a segundo plano.
Cambiando la prioridad de los procesos

Como anteriormente se ha comentado antes, cada proceso en Linux tiene un nivel de


prioridad que oscila entre -20 (prioridad más alta) y 20 (prioridad más baja). Cuanto mayor
sea el nivel de prioridad, más lentamente se ejecutará el proceso. Solamente el
superusuario ‘root’ puede asignar valores negativos a la prioridad de un proceso.

Para asignar determinada prioridad a un proceso en concreto se utiliza el comando nice.

nice prioridad proceso

Podemos cambiar la prioridad de un proceso con el comando renice. Este comando admite
los siguientes parámetros/modificadores:

 -g. Establece el nivel de prioridad de los procesos ejecutados por los miembros del
grupo especificado.
 -u. Establece el nivel de prioridad de los procesos ejecutados por los miembros del
usuario especificado.
 -p. Indica el nivel de prioridad para el proceso especificado.

COMUNICACIÓN ENTRE PROCESOS :

A través de variables de entorno:


Solo es posible de padres a hijos.
. Veamos un ejemplo.
El terminal o consola es un proceso, ya que se trata de un programa que ejecutamos. Si en el
terminal escribimos, por ejemplo, el comando “ls -l”, se estaría generando un nuevo proceso
que sería proceso hijo del terminal. En este caso el shell o intérprete de comandos sería el
proceso padre y el comando “ls -l” sería el proceso hijo.

Finalizar procesos

Para finalizar un proceso se utiliza el comando kill, que tiene la siguiente sintaxis:

kill [parámetro] PID

Si, por ejemplo, queremos eliminar un proceso con PID 17122, tendríamos que escribir: kill
17122.Puede que en ocasiones el proceso no finalice al emplear el comando kill sin
parámetros. Para matar un proceso asegurándonos de que no ignorará la petición de finalizar
su ejecución se emplea el parámetro -9.

kill -9 17122

Hay un total de 32 señales que se pueden enviar a los procesos. Las más utilizadas son las
siguientes:

 kill -1 (Sighup). Reinicia el proceso.


 kill -9 (SigKill). Mata el proceso.
 kill -15 (SigTerm). Termina el proceso.

Por otra parte, el comando killall nombre_programa finaliza todos los procesos que estén
ejecutando el programa.

CONCLUSIONES:
Podemos concluir que si se tiene un buen manejo de la gestión de procesos en linux podemos
tener un mejor control y poder realizar cambios que puedan ayudar a optimizar los procesos
también podemos identificar procesos que tienen errores y repararlos, además de ver todo los
procesos que se están utilizando, comprobar el estado de los procesos y muchas ventajas mas
optimizando así el trabajo a realizar, estando a la vanguardia.

Así mismo si tenemos buenos procesos podemos mejorar y optimizar mucho más el trabajo
realizado con procesos optimizados y de alto estándar en la industria.

FUENTES :
https://w3.ual.es/~acorral/DSO/Tema_2.pdf
https://smaldone.com.ar/documentos/misdocs/tutorial-gnu-linux/index-7.html
https://manuelfrancoblog.wordpress.com/2017/02/01/procesos-en-linux/
http://es.tldp.org/Universitarios/seminario-1.html

También podría gustarte