IMPORTANT: Per accedir als fitxer de subversion: http://acacha.org/svn (sense password). Poc a poc s'aniran migrant els enllaços. Encara però funciona el subversion de la farga però no se sap fins quan... (usuari: prova i la paraula de pas 123456)

En sistemes operatius que suporten l'execució de múltiples processos de forma concurrent o en sèrie (batch), el control de tasques és refereix a la capacitat per a gestionar l'execució d'aquestes tasques. Les tasques, sovint també son conegudes pel ter me anglès jobs.

Shell Unix

Quan s'utilitza un sistema Unix o Unix-like amb línia de comandes, un usuari inicialment només té un sol procés en execució (la terminal). La majoria de tasques es poden assolir executant una ordre que prendrà el control de la terminal fins que no s'aturi la seva execució. Però a vegades, ens interessa executar una ordre en segon terme sense perdre el control de la terminal. El control de tasques és una facilitat que ofereixen les shell modernes per tal de fer això possible.

Les comandes fg, bg i jobs, conjuntament amb l'operador & ens permetent controlar els processos d'una terminal Unix.

Exemple

El mode per defecte en que s'executa una ordre a la línia d'ordres és en primer pla. Per executar una comanda en segon pla, s'utilitza l'operador &

$ ordre &

Per comprovar-ne el funcionament, s'utilitza l'ordre sleep. Aquesta ordre s'espera un temps especificat en segons abans de finalitzar la seva execució. Per exemple:

$ sleep 10

Bloquejarà la terminal durant 10 segons. Si s'executa:

$ sleep 10&

La terminal no es bloqueja i apareixerà un missatge similar a

[1] 13578

On [n] ([1] en l'exemple) és el número de procés que s'està executant en segon terme i 13578 és el PID del procés.

Es poden executar diversos cops l'ordre sleep i consultar la taula de treballs (jobs) en segon terme utilitzant l'ordre jobs:

$ sleep 10&
[1] 13691
$ sleep 10&
[2] 13692
$ sleep 10&
[3] 13695
$ sleep 10&
[4] 13696

$ jobs
[1]   Running                 sleep 10 &
[2]   Running                 sleep 10 &
[3]-   Running                 sleep 10 &
[4]+   Running                 sleep 10 &

En qualsevol moment es pot aturar un procés amb la combinació de tecles Ctrl+Z (envia la senyal aturar). Escriviu:

$ sleep 50

I s'aturarà l'ordre amb la combinació Ctrl+Z (envia la senyal aturar). Apareixerà el següent per pantalla:

[1]+  Stopped                 sleep 50 

L'ordre sleep ha quedat suspesa tal i com es pot veure executant:

$ jobs
[1]+  Stopped                 sleep 50

Es pot reprendre la seva execució en primer pla amb:

$ fg sleep

O es pot reprendre en segon pla amb:

$ bg sleep 
[1]+ sleep 50 &

Història

El control de de tasques en Unix va ser introduït per la shell C. Més tard va ser incorporat en altres shells com Bourne shell. Actualment és una característica de totes les Shell modernes.

Vegeu també

Vegeu també

Enllaços externs