next up previous contents
Next: 229 Para practicar Up: Control de tareas Previous: Primer y segundo plano

fg, bg, jobs, kill

Supongamos que queremos actualizar nuestra base de datos de nombres de ficheros para el comando locate, para ello ejecutamos:

# updatedb

Observamos que tarda en terminar y suspendemos su ejecución con [Control]+[z] . El sistema nos devuelve el mensaje:

[1]+        Stopped       updatedb
que es autoexplicativo, el [1] es el número de tarea, el signo + señala la última suspendida.

Si ahora queremos que continúe pero en segundo plano, basta con ejecutar2.20

# bg

para haber continuado en primer plano,

# fg

Si el proceso fué lanzado en segundo plano,

# updatedb &
el sitema devuelve un mensaje como este

[1]     1095
la tarea 1 con número de proceso (PID) 1095.

Si intentamos detener el proceso con [Control]+[z], el sistema ni se entera (el proceso está corriendo en segundo plano), así que previamente debemos traerlo a primer plano con $ fg y después ya podemos suspenderlo, relanzarlo o matarlo.

El comando jobs (interno de la shell) informa sobre el estado de los procesos (ps también).

Con kill podemos matar un proceso, la sintaxis más usual es:

kill [señal2.21] PID...2.22

donde señal es opcional y en general toma dos valores

-15
(SIGTERM) es la señal por defecto y no siempre es capaz de ``matar'' todos los procesos
-9
(SIGKILL) es el ``Rambo'' de las señales, acaba con cualquier proceso.
Si no especificamos ninguna señal, estamos mandando la señal 15 y de una manera no del todo formal, le estamos diciendo al proceso que se muera por las buenas. Es deseable que sea así, porque si hace caso el proceso, puede cerrar los ficheros, descargar los datos de memoria a disco y decirle a sus hijos (en caso de que los tuviera) que también se mueran por las buenas.

Si nos vemos obligados a utilizar la señal 9, lo matamos bien muerto, sin tiempo a que cierre ficheros ni descargue datos de memoria a disco. Moraleja, intentaremos mandarle primero un kill normal y si no hay manera pasaremos a la artillería pesada.

Supongamos que hemos cerrado mozilla y que notamos que el sistema ``está lento'', escribimos:

$ps -ax

y ¡date!, mozilla sigue en ejecución con el PID

...

3940 tty1 S 0:01 /usr/lib/mozilla-1.0.1/mozilla-bin

...

ejecutamos entonces:

$ kill -9 3940

y listo, se acabó mozilla (en sentido figurado, claro está). Si ahora ejecutamos de nuevo:

$ ps -ax

no debería aparecer mozilla por ningún lado.

Si la lista de procesos es muy larga también podemos filtrar la salida con grep:

$ ps -ax | grep mozilla



Footnotes

... ejecutar2.20
Si hubieran mas tareas suspendidas,

# bg %numero_tarea.

fg del inglés foreground y gb de background.

... [señal2.21
Con

$ kill -l

podemos visualizar todas las señales posibles (es una ele minúscula).

... PID...2.22
En este caso no hemos puesto ni $ ni # ya que el root podrá ``matar'' procesos de todos los usuarios, pero un usuario tan sólo podrá ``matar'' los suyos.

next up previous contents
Next: 229 Para practicar Up: Control de tareas Previous: Primer y segundo plano

2004-04-21