Hoy vamos a ver el modo de gestionar trabajos, procesos o aplicaciones que corren dentro de un sistema Linux/Unix. El objetivo es aprender a poner un proceso que se está ejecutando en segundo plano, suspenderlo, volver a ponerlo en primer plano, reactivarlo, etc.
Ejecutar un trabajo/proceso en segundo plano
Para ejecutar algo en segundo plano, debemos utilizar el carácter & y colocarlo tras el comando o proceso a ejecutar:
$ top &
Os recomiendo también revisar esta entrada sobre el comando nohup.
Visualizar los procesos que se encuentran en segundo plano
Para obtener un listado de los procesos que están ejecutándose en segundo plano utilizaremos el comando
(background). La salida del mismo nos indicará cada uno de los procesos con su número de trabajo asignado entre corchetes.
$ bg
[1]+ top &
Traer a primer plano los procesos que se encuentran en segundo plano
Para ello utilizaremos el comando
(foreground) junto con el ID del trabajo anteponiéndole %:
$ fg %1
Suspender un proceso que tenemos corriendo en primer plano
Si estamos ejecutando un trabajo en pantalla/terminal y queremos suspenderlo colocarlo en segundo plano utilizaremos la combinación de teclas Ctrl + Z. Automáticamente nos asignará el ID de trabajo para poder gestionarlo posteriormente:
top - 21:20:57 up 33 min, 2 users, load average: 0.99, 0.98, 0.81
Tasks: 112 total, 1 running, 111 sleeping, 0 stopped, 0 zombie
Cpu(s): 23.0%us, 4.7%sy, 0.0%ni, 70.5%id, 1.6%wa, 0.1%hi, 0.0%si, 0.0%st
Mem: 2052640k total, 948528k used, 1104112k free, 55876k buffers
Swap: 1951888k total, 0k used, 1951888k free, 461444k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
776 root 15 -5 0 0 0 S 0 0.0 0:00.02 kjournald2
[1]+ Stopped top
Para volver a arrancarlo en primer plano después:
$ fg %1
Y para ponerlo en segundo plano:
$ bg %1
Esto es realmente útil en casos como por ejemplo, estamos ejecutando un script que se demora más de lo esperado y necesitamos ejecutarlo sin necesidad de una terminal, lo dejamos en segundo plano y seguirá corriendo sin necesidad de ningún entorno visual. También si solo disponemos de una única terminal y necesitamos realizar varias tareas simultaneamente.
Visualizar los trabajos en primer plano, suspendidos, en segundo plano
El comando
nos permite visualizar un listado de los trabajos en el sistema junto con su estado e identificador:
$ jobs
[1] Stopped top
[2]- Stopped top
[3]+ Stopped vim
Un resumen práctico sería el siguiente. Arrancamos un programa (por ejemplo thunderbird) desde línea de comandos:
$ thunderbird
Ocurre que necesitamos pararlo temporalmente. En la terminal desde la que lo hemos lanzado presionamos Ctrl + Z.
Ahora el programa está parado a la espera de ser reactivado cuando queramos:
$ thunderbird
^Z
[1]+ Stopped thunderbird
$ jobs
[1]+ Stopped thunderbird
Podemos arrancarlo de nuevo pero en segundo plano:
$ bg %1
[1]+ thunderbird &
O en primer plano:
$ fg %1
Recordad que es interesante revisar la ayuda (páginas man y –help) de los comandos para obtener información sobre su utilización y las posibilidades que nos ofrece.
Comentarios recientes