Control de tasques (Unix)

De Viquipèdia
Dreceres ràpides: navegació, cerca

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é són conegudes pel ter me anglès jobs.

Shell Unix[modifica | modifica el codi]

Quan s'utilitza un sistema Unix o Unix-like amb línia d'ordres, 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 es 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[modifica | modifica el codi]

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 el senyal aturar). Escriviu:

$ sleep 50

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

[1]+ Stopped sleep 50 

L'ordre sleep ha quedat suspesa tal 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[modifica | modifica el codi]

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é[modifica | modifica el codi]

Enllaços externs[modifica | modifica el codi]