Spesso mi ritrovo a lanciare comandi da shell piuttosto corposi, copie di svariti giga o tar gzip sempre di svariti giga, che mi impegnano la console del pc (di solito remoto) su cui lavoro perche’ mi dimentico sistematicamente di mettere la & al comando per avviarlo in background.
Per continuare a fare altre cose sulla macchina posso aprire un’altra sessione remota ma linux mette a disposizione un metodo per mettere in background i processi che impegnano la console.
Poniamo di avere un super tar di una decina di giga in corso
pastiglia:/CTH_WEB# tar cvzf.tgz cth *
che sta’ lavorando.
Io posso dare un Ctrl-Z (control Z) e lui mi rispondera’
[1]+ Stopped tar cvzf cth.tgz *
pastiglia:/CTH_WEB#
il processo e’ stato stoppato e lui mi ha reso il prompt della shell
Adesso con il comando jobs vedo che:
pastiglia:/CTH_WEB# jobs
[1]+ Stopped tar cvzf cth.tgz *
pastiglia:/CTH_WEB#
il mio tar e’ fermo ma ancora vivo, quindi non sta’ facendo nulla e non consuma cpu, e’ congelato.
A questo punto posso fare tre cose:
1) lasciarlo in quello stato di stasi perche’ mi servono tutte le risorse del sistema, lo rilascero’ in seguito
2) sono arrivato ad “in seguito” e lo faccio ripartire con:
fg 1
che tradotto vuol dire “rimetti in foreground il processo fermo numero 1″, il numero lo vedo dal comando jobs, e’ il numerello fra parentesi quadre, e non ha nulla a che vedere con l’id del processo che si vede con “ps”
3) lo faccio ripartire in background:
bg 1
cioe’ il processo riparte, ma viaggia senza impegnarmi la shell, come se lo avessi lanciato con la & alla fine del comando.