Inoltre, puoi utilizzare il segno "&" per eseguire molti processi attraverso una (1) connessione ssh per mantenere un numero minimo di terminali. Ad esempio, ho un processo che ascolta i messaggi per estrarre i file, il secondo processo ascolta i messaggi per caricare i file:Usando "&" posso eseguire entrambi i servizi in un terminale, tramite una singola connessione ssh al mio server .
Questi processi che passano attraverso "&" rimarranno attivi anche dopo la chiusura della sessione ssh. Abbastanza pulito e utile se la connessione ssh al server viene interrotta e non è stato utilizzato alcun multiplexer di terminale (schermo, tmux, byobu).
Quando non viene detto diversamente, i comandi prendono il sopravvento. Hai solo un processo "in primo piano" in esecuzione in una singola sessione di shell. Il simbolo &indica ai comandi di essere eseguiti in un processo in background e ritorna immediatamente alla riga di comando per ulteriori comandi.
sh my_script.sh &
Un processo in background non rimanere in vita dopo la chiusura della sessione della shell. SIGHUP termina tutti i processi in esecuzione. Di default comunque. Se il tuo comando è di lunga durata o viene eseguito a tempo indeterminato (ad esempio:microservizio), devi eseguirlo con nohup in modo che rimanga in esecuzione dopo la disconnessione dalla sessione:
nohup sh my_script.sh &
MODIFICA: Sembra che ci sia un'area grigia relativa alla chiusura dei processi in background quando viene utilizzato &. Tieni solo presente che la shell può chiudi il processo in base al tuo sistema operativo e alle configurazioni locali (in particolare su CENTOS/RHEL):https://serverfault.com/a/117157.
Il &
esegue il comando in background.
Da man bash
:
Se un comando viene terminato dall'operatore di controllo & , la shell esegue il comando in background in una subshell. La shell non attende la fine del comando e lo stato di ritorno è 0.