1. Introducció als entorns de treball UNIX

1.10. Gestió bàsica de processos

1.10.4. Gestió de processos en segon pla i primer pla

Si esteu treballant amb Gnu/Linux a través d’una xarxa o des d’un terminal amb una pantalla que només permet entrada de text sense suport gràfic, és possible que només tingueu accés a la shell. Si esteu acostumats a treballar en un entorn gràfic en el qual pots tenir diversos programes oberts alhora i canviar entre ells, la interfície de la shell pot semblar limitada.

No obstant això, tot i que la shell bash no té una interfície gràfica per executar diversos programes alhora, sí que permet moure els programes actius entre el fons i el primer pla. Això et permet tenir diversos processos en execució i seleccionar el que volem utilitzar en aquell moment.

Podeu posar un programa en segon pla de diverses maneres. Una forma és agregar el símbol & al final de la línia d’ordre quan l’executeu per primera vegada o podeu fer servir l’ordre at per executar ordres de manera que no estiguin connectades a la shell.

Per aturar una ordre en execució i posar-la en segon pla, pressioneu Ctrl+Z. Després d’aturar l’ordre, podeu tornar a executar-la en primer pla amb l’ordre fg o iniciar-la en segon pla amb l’ordre bg. És important tenir en compte que qualsevol ordre en execució en segon pla pot generar sortida durant les ordres que executem posteriorment des d’aquesta shell. Per exemple, si apareix sortida d’una ordre en segon pla durant una sessió de vi, simplement pressioneu Ctrl+L per refrescar la pantalla i desfer-vos de la sortida.

Si teniu programes que desitgeu executar mentre treballeu a la shell, podeu col·locar els programes en segon pla. Per col·locar un programa en segon pla en el moment en què s’executa el programa, cal escriure un ampersand (&) al final de la línia d’ordre, així:

$ find /usr > /tmp/fitxer-usuaris &
[3] 15971

Aquest exemple d’ordre troba tots els arxius en el teu sistema Gnu/Linux (a partir d’usr), imprimeix aquests noms d’arxiu i els col·loca a l’arxiu /tmp/fitxer-usuaris. L’ampersand (&) executa aquesta línia d’ordre en segon pla. Observeu que es mostra el número de treball, [3], i el número d’identificació de procés, 15971, quan es llança l’ordre. Per comprovar quines ordres teniu en execució en segon pla, fa servir l’ordre jobs, així:

$ jobs
[1] Stopped (tty output) vi /tmp/unficheroqualsevol

[2] Running find /usr -print > /tmp/allusrfiles &

[3] Running nroff -man /usr/man2/* >/tmp/man2 &

[4]- Running nroff -man /usr/man3/* >/tmp/man3 &

[5]+ Stopped nroff -man /usr/man4/* >/tmp/man4

Es poden portar qualsevol de les ordres de la llista de treballs al primer pla. Per fer referència a una tasca en segon pla (per cancel·lar-lo o portar-lo al primer pla), es fa servir un signe de percentatge (%) seguit del número de tasca. Per editar l’arxiu unfitxerqualsevol novament, escriviu:

$ fg %1

Com a resultat, l’ordre vi i el terminal que el conté s’obren de nou. Tot el text és com estava quan vas aturar la feina de vi. Abans de posar un processador de text, un processador de paraules o un altre programa similar en segon pla, assegureu-vos de guardar l’arxiu. És fàcil oblidar que teniu un programa en segon pla i perdreu les vostres dades si tanqueu la sessió o reinicieu l’ordinador.

Si una ordre s’atura, podem fer que s’executi de nou en segon pla fent servir l’ordre bg. Per exemple, preneu la tasca número 5 de la llista de tasques de l’exemple anterior. Escriviu el següent:

$ bg %5

Després d’això, la tasca s’executarà en segon pla. La seva entrada a la llista de tasques apareixerà així:

[5] Running nroff -man man4/* >/tmp/man4 &