Questo è noto come job control
unix. La &
informa il guscio di mettere il comando in background. Ciò significa che continua a eseguire il sys-snap.sh
comando ma ti riporta alla shell per permetterti di continuare a eseguire comandi paralleli.
È possibile visualizzare l'elenco dei lavori attualmente in esecuzione con il jobs
comando. È possibile tornare al comando (portare in primo piano) con l'uso del fg
comando. Il che riporta il comando allo stato in cui non vedi alcun prompt e devi emettere Ctrl- Cper terminare il processo. È comunque possibile sospendere (mettere in pausa) tale processo, emettendo Ctrl- Z. Questo farà una pausa sys-snap.sh
e ti farà tornare al tuo prompt. Puoi quindi metterlo in background (come se lo avessi emesso con il &
) con il bg
comando, e riprenderà a funzionare dal suo stato di pausa il Ctrl- l' Zaveva inserito.
Nota che puoi avere più di un lavoro alla volta (come mostrato da jobs
):
[1]- Running sys-snap.sh &
[2]+ Running another-script.sh &
Puoi metterli in background e in primo piano usando il loro numero di lavoro, %1
sarà sys-snap.sh
e %2
sarà another-script.sh
. Se si utilizza fg
o bg
senza argomenti sarà l'azione del comando sul posto di lavoro segnato da +
in jobs
uscita sopra.
fg %1
tornerà sys-snap.sh
in primo piano, lasciando another-script.sh
sullo sfondo.
È possibile eseguire la sequenza Ctrl- Cper l'esecuzione dei lavori senza doverli mettere in primo piano con il kill
comando, kill %1
invierà l'equivalente di Ctrl- Ca sys-snap.sh
.
Se si utilizza la shell bash, il man bash
comando ha una sezione dettagliata nella sezione intitolata "CONTROLLO LAVORO" che va più in dettaglio.
Per quanto riguarda il nome di sys-snap.sh
, sotto i nomi di file unix sono arbitrari (con un paio di eccezioni come i file del caricatore dinamico). Non è necessario che abbiano estensioni di file specifiche per farli funzionare come script di shell, invocare altri comandi come perl
o php
ecc. Di solito viene utilizzato per fornire chiarezza, che in questo caso è .sh
uno script di shell che utilizza Bourne Shell /bin/sh
.
La parte funzionale di sys-snap.sh
(quando guardi il contenuto con qualcosa come il less
comando) è lo Shebang . Sulla prima riga troverai probabilmente uno di:
#! /bin/sh
#! /bin/bash
#! /usr/local/bin/bash
o simili. In termini di base, un comando dopo l' esecuzione #!
(come /bin/sh
) viene eseguito e il contenuto del resto del file di script viene inviato ad esso una riga alla volta. Si noti che il file deve anche essere impostato come eseguibile in chmod
modo da poterlo eseguire come comando. Se le autorizzazioni non sono state impostate, allora shebang
non ha alcun effetto, poiché si otterrebbe l'errore:
bash: sys-snap.sh: command not found
o se lo avessi eseguito per percorso esplicito ./sys-snap.sh
( .
intendendo l'attuale directory di lavoro) otterrai:
bash: ./sys-snap.sh: Permission denied
L'altra alternativa è lasciarlo senza eseguire le autorizzazioni e chiedere esplicitamente a / bin / sh di eseguirlo:
/bin/sh sys-snap.sh &
&&
diversa da una singola e commerciale&
?