Questo è noto come job controlunix. La &informa il guscio di mettere il comando in background. Ciò significa che continua a eseguire il sys-snap.shcomando ma ti riporta alla shell per permetterti di continuare a eseguire comandi paralleli.
È possibile visualizzare l'elenco dei lavori attualmente in esecuzione con il jobscomando. È possibile tornare al comando (portare in primo piano) con l'uso del fgcomando. 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.she ti farà tornare al tuo prompt. Puoi quindi metterlo in background (come se lo avessi emesso con il &) con il bgcomando, 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, %1sarà sys-snap.she %2sarà another-script.sh. Se si utilizza fgo bgsenza argomenti sarà l'azione del comando sul posto di lavoro segnato da +in jobsuscita sopra.
fg %1
tornerà sys-snap.shin primo piano, lasciando another-script.shsullo sfondo.
È possibile eseguire la sequenza Ctrl- Cper l'esecuzione dei lavori senza doverli mettere in primo piano con il killcomando, kill %1invierà l'equivalente di Ctrl- Ca sys-snap.sh.
Se si utilizza la shell bash, il man bashcomando 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 perlo phpecc. Di solito viene utilizzato per fornire chiarezza, che in questo caso è .shuno script di shell che utilizza Bourne Shell /bin/sh.
La parte funzionale di sys-snap.sh(quando guardi il contenuto con qualcosa come il lesscomando) è 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 chmodmodo da poterlo eseguire come comando. Se le autorizzazioni non sono state impostate, allora shebangnon 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&?