View my profile on LinkedIn

Foreground e Background nella shell

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.

One Comment

  1. LuNa says:

    :> ottimo trucchetto che conoscevo ma decisamente utile. ottimo post !

Leave a Reply

hitstatus