2014 m. rugsėjo 3 d., trečiadienis

Komandų darbas fone

Foreground job
Procesas paleistas shell terminale.
Kitas procesas negali būti paleistas.

Background job
Procesas veikiantis shell terminalo fone - neužimantis terminalo.
Kitas procesas gali būti paleistas.

Procesas paleidžiamas dirbti fone su '&' simboliu
Fone dirbančių procesų peržiūrai naudojamą 'jobs' komanda. $ ping 8.8.8.8 > ping &
[1] 20026
$ jobs
[1]+ Running ping 8.8.8.8 > ping &
Toliau matom kaip fone paleidžiami dar du procesai 'sleep 300' ir 'sleep 600'
Iškviesti procesą galima 'fg' komanda, kaip matome, 'jobs' atvaizduoja '[1]+', tai reiškia, kad ši reikšmė bus numatutoji kviečiant 'fg' komandą jei nebus norodyto kito proceso numerio $ sleep 300 & sleep 600 &
$ jobs
[1]+ Stopped ping 8.8.8.8 > ping
[2] Running sleep 300 &
[3]- Running sleep 600 &
$ bg
[1]+ ping 8.8.8.8 > ping &
$ fg 2
sleep 300

Išėjimas, stabdant procesą Ctrl + Z
Išėjimas, uždarant procesą Ctrl + C


Paleidžiant programą iš išėjus su Ctrl + Z klavišu, ji yra sustabdoma
Dabar panaudojus komanda 'bg' programa bus nusiųsta dirbti fone $ ./programa.sh
Ctrl + Z
[1]+ Stopped ./programa.sh
148 ✗ sup ~jp $ jobs
[1]+ Stopped ./programa.sh
0 ✓ sup ~ $ bg
[1]+ ./programa.sh &
0 ✓ sup ~ $ jobs
[1]+ Running ./programa.sh &
Proceso uždarimas:
$ jobs -l
[1] 9712 Stopped man nano
[2]- 9734 Stopped man cat
[3]+ 9751 Stopped (tty output) man grep
$ kill -9 9712
[1] Killed man nano
Visų jobs procesų uždarymas: $ kill -9 $(jobs -p)
[2]- Killed man cat
[3]+ Killed man grep
Komandų sinonimai
fg %2 %2
bg 2 ([2] nurodo 'jobs' [id]) tas pats kas paleisti programą su '&'


jobs [-lp] [proceso id]
-l rodo procesus kartu su kita informacija
-p rodo tik procesų id

Šaltiniai:
http://serverfault.com/questions/240155/how-can-i-kill-all-stopped-jobs
https://www.youtube.com/watch?v=8yGeor3iKVQ
http://web.mit.edu/gnu/doc/html/features_5.html