Sunteți pe pagina 1din 6

Gestin de procesos en Linux

Un proceso en Linux es, en resumen, un programa en ejecucin. 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 adems, 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 estara generando un nuevo proceso que sera proceso hijo del terminal. En este caso el shell sera el proceso padre y el comando ls -l sera el proceso hijo. Trabajando con procesos. El comando ps. El comando ps proporciona informacin sobre los procesos que se estn ejecutando en el sistema. Si escribimos en el terminal ps, obtendremos como salida un listado de los procesos lanzados con el usuario actual que an se estn 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 interrogacin (?), el proceso no tiene asociada ninguna terminal. La tercera columna indica el tiempo total que ha estado ejecutndose 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 intrprete de comandos, y el comando ps. El comando ps admite algunos parmetros. El parmetro -e devuelve un listado de todos los procesos que se estn ejecutando. El parmetro -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).

Los parmetros pueden aparecer juntos en el mismo comando, es decir que podramos llamar al comando ps de la siguiente forma: ps -ef. De esta manera obtendramos un listado extendido de todos los procesos que se estn ejecutando en el sistema. El parmetro -u informa de los procesos lanzado por un determinado usuario. De tal forma que si escribimos ps -u alex, aparecer un listado de los procesos que est ejecutando el usuario alex. 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 informacin mostrada se va actualizando peridicamente lo que nos permite ver la evolucin del estado de los procesos. Adems, en la parte superior muestra informacin adicional, como el espacio en memoria ocupado por los procesos, el espacio ocupado por la memoria de intercambio o swap, el nmero total de tareas o procesos que se estn ejecutando, el nmero de usuarios o el porcentaje de uso del procesador.

Aunque el tema de las prioridades de los procesos lo trataremos ms adelante, mientras el comando top est en marcha podremos cambiar fcilmente la prioridad de los procesos. A modo de resumen cada proceso en Linux tiene un nivel de prioridad que va de -20 (prioridad ms alta) hasta 19 (prioridad ms baja). Cuanto mayor sea el nivel de prioridad, ms lentamente se ejecutar el proceso. Y cmo podemos cambiar con top la prioridad de un proceso? Muy sencillo. Con el comando top en marcha pulsamos la tecla r. A continuacin 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 consideracin, 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 se interacta. 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 ningn otro comando. En este caso el terminal permanece bloqueado, sin poder introducir ningn otro comando, hasta que el proceso en primer plano termine. Pondremos un proceso en segundo plano aadiendo el smbolo 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 nmero de segundos que le pasemos como parmetro.

En la imagen anterior se observa que al ejecutar un proceso en segundo plano se devuelve un nmero entre corchetes seguido de otro nmero. El nmero entre corchetes indica el nmero de procesos que se tienen ejecutndose en segundo plano. El segundo nmero es el PID o identificador del proceso. Para ver que trabajos se estn ejecutando en segundo plano, se usa el comando jobs.

El signo + seguido del nmero de trabajo entre corchetes indica el trabajo ms reciente que se est ejecutando. El signo menos indica el siguiente trabajo ms 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 nmero de proceso que queremos pasar a primer plano. Por ejemplo, fg %2 pondra en primer plano la tarea nmero 2. En la siguiente imagen se ejecuta sleep 90 en segundo plano, y despus 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 combinacin de teclas Crtl+Z. Cuando se pulsa esa combinacin de teclas, el proceso en ejecucin 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 Cada proceso en Linux tiene un nivel de prioridad que oscila entre -20 (prioridad ms alta) y 19 (prioridad ms baja). Cuanto mayor sea el nivel de prioridad, ms 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 parmetros:

-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.

Finalizar procesos Para finalizar un proceso se utiliza el comando kill, que tiene la siguiente sintaxis: kill [parmetro] PID Si, por ejemplo, queremos eliminar un proceso con PID 17122, tendramos que escribir: kill 17122.Puede que en ocasiones el proceso no finalice al emplear el comando kill sin parmetros. Para matar un proceso asegurndonos de que no ignorar la peticin de finalizar su ejecucin se emplea el parmetro -9. kill -9 17122 Hay un total de 32 seales que se pueden enviar a los procesos. Las ms 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 estn ejecutando el programa.

S-ar putea să vă placă și