Mandrake Linux 8.1: Manuale di riferimento | ||
---|---|---|
Indietro | Capitolo 3. Introduzione alla linea di comando | Avanti |
Avrete già notato che quando lanciate un comando da un terminale normalmente dovete attendere che il comando abbia terminato l'esecuzione prima di riavere il controllo della shell: questo avviene quando eseguite i comandi in foreground (ovvero in primo piano). In alcune occasioni, tuttavia, questo comportamento non è desiderabile.
Immaginate ad esempio di voler copiare ricorsivamente il contenuto di una grossa directory in un'altra. Volete anche ignorare gli eventuali errori, quindi redirigete l'output del canale di errore verso /dev/null:
cp -R images/ /shared/ 2>/dev/null |
Questo comando potrebbe richiedere anche diversi minuti prima che l'operazione sia terminata. A questo punto avete due possibilità: la prima, più distruttiva, consiste nell'arrestare l'esecuzione (kill) e ripetere il comando quando avrete il tempo di aspettare; per farlo dovreste digitare Ctrl+c (Control+c): questo comando vi riporta al prompt. Ma aspettate un momento, non fatelo! Continuate a leggere.
Supponiamo che vogliate che il comando venga eseguito mentre voi fate qualcos'altro. La soluzione consiste nello spostare il processo in background. Per farlo, digitate Ctrl+z per sospendere il processo:
$ cp -R images/ /shared/ 2>/dev/null # Adesso premete Ctrl-z [1]+ Stopped cp -R images/ /shared/ 2>/dev/null $ |
e vi ritroverete di nuovo al prompt. A questo punto il processo è in standby, in attesa che voi lo riattiviate (come risulta dalla dicitura Stopped). Ed è ciò che vorrete fare, ma in modo tale che il processo riparta in background. Digitate bg (che sta per BackGround) per ottenere questo risultato:
$ bg [1]+ cp -R images/ /shared/ 2>/dev/null & $ |
In questo modo il processo riprenderà l'esecuzione, ma questa volta in background, il che viene indicato dal simbolo & (e commerciale) alla fine della linea di comando. Subito dopo ritornerete al prompt e potrete continuare a lavorare. Un processo che viene eseguito in background viene indicato con il termine job.
Ovviamente potete anche lanciare i processi in modo tale che vengano eseguiti in background, aggiungendo una & alla fine della linea di comando. Ad esempio, potete far eseguire fin dall'inizio la procedura di copia della directory in background digitando:
cp -R images/ /shared/ 2>/dev/null & |
Se lo desiderate, potete anche riportare il processo in primo piano e attendere che venga completato usando il comando fg (ForeGround). Per riportarlo in background, usate la sequenza Ctrl+z, bg.
Potete anche lanciare diversi job con questo sistema; in questo caso a ciascun job verrà assegnato un numero consecutivo. Il comando jobs elenca tutti i job associati alla shell corrente. Il job contrassegnato da un carattere + è l'ultimo processo che è stato avviato in background. Potete riportare un qualsiasi processo in primo piano digitando il comando fg <n> dove <n> è il numero del job, ad esempio fg 5.
Notate che con questi comandi potete anche avviare o fermare applicazioni full-screen (ovvero scritte in modo tale da girare a tutto schermo), come ad esempio less o un editor di testo come Vi, e riportarle in primo piano quando volete.