6. Taustaprotsesside käivitamine ja käsitlemine: tööde juhtimine

Arvatavasti olete juba märganud, et kui annate Terminalis käsu, peate tavaliselt ootama, kuni see täidetakse, enne kui shell Teil uuesti lubab tegutsema asuda. See tähendab, et olete saatnud käsu esiplaanile. Siiski pole see sugugi alati soovitatav ega soovitud.

Oletame näiteks, et soovite kopeerida üsna suure kataloogi kuhugi mujale. Samuti soovite ignoreerida vigu, mistõttu suunate veaväljundi faili /dev/null:

cp -R pildid/ /shared/ 2>/dev/null

Sellise käsu teostamisele võib kuluda mitu minutit. Seepärast on Teil kaks võimalust, kui soovite vahepeal käsureal edasi tegutseda: esimene on vägivaldne käsu peatamine (tapmine) ning selle taaskäivitamine millalgi, kui aega on rohkem. Selleks vajutage klahve Ctrl-C: see katkestab protsessi ja toob Teie silmade ette taas viiba. Kuid Te ei pruugi sugugi nii talitada! Lugege edasi.

Oletame, et soovite jätta käsu tegutsema, samal ajal kui ise võtate midagi muud ette. Seda võimaldab protsessi saatmine taustale. Selleks vajutage Ctrl-Z protsessi ajutiseks peatamiseks:

$ cp -R images/ /shared/ 2>/dev/null
# Vajutage nüüd Ctrl+z
[1]+  Stopped                 cp -R pildid/ /shared/ 2>/dev/null
$

ja Teie ees seisab taas viip. Protsess on nüüd ootel, oodates Teilt käsku taas tegevust alustada (seda näitab võtmesõna Stopped). Seda Te muidugi soovitegi, aga muu tegevuse taustal. Soovitud tulemuse saavutamiseks andke käsk bg (BackGround):

$ bg
[1]+ cp -R pildid/ /shared/ 2>/dev/null &
$

Protsess käivitatakse nüüd uuesti, aga juba taustal töötava ülesandena, millele osutab rea lõpus seisev sümbol & (ampersand). Teie ees aga seisab taas viip ning Te võite oma asjadega edasi tegutseda. Protsessi, mis töötab taustaülesandena või taustal, nimetataksegi taustatööks.

Mõistagi on võimalik panna protsesse ka juba taustal käivituma, kui lisada käsu lõppu sümbol &. Nii võite näiteks käivitada kataloogi kopeerimise käsu taustal sel moel:

$ cp -R pildid/ /shared/ 2>/dev/null &

Soovi korral võite protsessi uuesti esiplaanile tuua ja jääda ootama selle lõppemist käsuga fg (ForeGround). Uuesti taustale saatmiseks andke korraldused Ctrl-Z ja bg.

Nii saab käivitada ka mitu tööd: igale käsule antakse sel juhul omaette töö number. shelli käsk jobs näitab kõiki töid, mis on seotud aktiivse shelliga. Kui tööle eelneb märk +, on see see käivitatud taustaülesandena. Mõne konkreetse töö taastamiseks esiplaanil andke korraldus fg <n>, kus <n> on töö number, näiteks fg 5.

Pange tähele, et sel moel saab peatada või käivitada ka täisekraanirežiimis rakendusi, näiteks less või tekstiredaktor Vi, ning soovi korral neid esiplaanile taastada.