Curso Linux

Tema 7 – Administrando procesos

En este tema vamos a ver como administrar los procesos del sistema. Os recomiendo, antes de empezar, que hagáis un repaso de los temas anteriores para que os resulte más sencilla la comprensión.

En Linux, un proceso es un programa ejecutándose en la memoria. Normalmente, nuestros equipos están ejecutando cientos de procesos simultáneamente. Si son procesos del sistema, Linux suele referirse a ellos como daemons o demonios. Normalmente te encontrarás el nombre del proceso terminado en «d» como httpd, el proceso o daemon responsable del servicio http.

Ver que procesos se están ejecutando

Podemos ver todos los procesos que se están ejecutando en nuestro sistema tecleando lo siguiente:

# ps aux

También podemos usar switches para modificar la información que nos mostrará el comando. Por ejemplo podremos usar (a) para ver todos los procesos, (u) el usuario y (x) para mostrarnos los procesos no asociados a una terminal. Os recomiendo utilizar ese grupo de switches para ps ya que nos permite ver que usuario ha iniciado qué proceso y cuantos recursos está usando.

Fíjate que cada proceso que aparece nos muestra una gran cantidad de información.

  • usuario
  • PID (identificador del proceso)
  • % CPU
  • % MEM (memoria RAM)

Si solo queremos ver todos los procesos con una información limitada podemos utilizar

#ps -A

Verás todos los procesos en ejecución, pero sin información como el porcentaje de uso de la CPU y memoria. Fíjate que bash aparece con PID 3653.

El número del proceso, o PIDs, son imprescindibles para trabajar en Linux ya que necesitarás el PID para administrar un proceso.

El comando top

Muy parecido al comando ps es el comando top, excepto que top nos muestra solamente los procesos superiores. Los procesos superiores son aquellos que más recursos están utilizando y es dinámico, por lo que nos proporciona información en tiempo real de nuestros procesos. Tecleamos lo siguiente:

# top

Como podemos observar, los procesos aparecen listados en orden de cuántos recursos del sistema están usando, y la lista esta continuamente cambiando en función del uso de esos procesos.

«Matando» procesos

De vez en cuando necesitaremos detener procesos en Linux. El comando que utilizaremos es kill. Este comando es particularmente importante si tenemos procesos que continúan ejecutándose y utilizando recursos del sistema, incluso cuando hemos intentado detenerlo. Estos procesos son comúnmente conocidos como procesos «zombie».

Para detener un proceso simplemente teclearemos la palabra kill y el ID del proceso o PID.

Hay varios tipos de «muertes». La muerte por defecto (cuando utilizamos el comando sin añadirle switches) es kill 15 o señal de terminación. Esto permite al proceso «limpiarse» y terminarse de una manera segura.

A veces, los procesos se niegan a terminar incluso habiéndoles enviado la señal por defecto del comando kill. En este caso nos pondremos un poco más serios y usaremos la señal absoluta de terminación para hacer el trabajo. Este comando es kill -9, el cual fuerza al kernel a terminar el proceso inmediatamente.

Cambiando la prioridad de los procesos

Cada proceso en Linux recibe un número de prioridad. Como probablemente has supuesto, este número de prioridad nos indica la importancia del proceso y donde se ubicará en linea en términos de uso de recursos del sistema. La prioridad se indica con un número entre el 0 y el 127 siendo 0 la máxima prioridad y 127 la mínima.

Como usuario root o administrador del sistema, nosotros no podremos indicar directamente la prioridad de un proceso -esto es trabajo del kernel- pero podemos indicarle al kernel que proceso nos gustaría que se ejecutase con una prioridad mayo. Esto lo haremos mediante el comando nice. Los valores para este comando van desde -20 a +19 siendo el valor más bajo la máxima prioridad.

Podemos indicar un número de prioridad usando el comando nice, el interruptor -n, el valor de nice y despues el comando que queremos ejecutar. Veamos un ejemplo utilizando airodump-ng para ello:

# nice -n -20 airodump-ng mon0

Más tarde, si quisiéramos reducir la prioridad de nuestro comando airodump-ng podremos hacerlo con el comando renice. Para utilizarlo solo tendremos que poner el comando, el nivel de prioridad y, a diferencia del comando nice, este comando solo nos aceptara el PID del proceso.

# renice 15 3653

Ejecutando un proceso en segundo plano

Como seguramente habrás observado, hay comandos que al ejecutarlos toman el control de la terminal hasta que termina su ejecución. Este proceso mantendrá la terminal ocupada, por lo que no podremos usarla de nuevo hasta que termine de procesar el comando.

Si quisiéramos seguir utilizando esta consola, podríamos enviar este proceso a ejecutarse en un segundo plano y volver a tener el control de la terminal. Para enviar un proceso a segundo plano simplemente tenemos que añadir & al final del comando.

Para volver a traer un proceso al primer plano simplemente teclearemos fg. También podemos enviar un proceso a segundo plano deteniéndolo con Ctrl + Z y después usar el comando bg junto con el PID para enviarlo a segundo plano.

Esto es todo por ahora, amigos. ¡Estad atentos a próximos temas!

 

 

Estándar

2 comentarios en “Tema 7 – Administrando procesos

Deja un comentario