Soluzione 1:
Il modo migliore è usare screen (sul server) per avviare una sessione per eseguire il comando e quindi disconnettere lo schermo in modo che continui a funzionare e tu possa fare altre cose o semplicemente disconnetterti dal server. L'altra opzione è usare nohup in combinazione con & quindi avresti nohup <command> &
Soluzione 2:
Puoi anche usare disown se hai già avviato il processo senza screen o nohup
Soluzione 3:
Le risposte esistenti possono funzionare bene, ma avevo bisogno di qualcosa per BusyBox (una shell e un set di strumenti per hardware minimo come i router domestici). Il mio sistema non ha screen , dtach , at , disown , o anche nohup ! Quindi grazie a tbc0 su SO (link), ho trovato questo gioiello. Ritorna immediatamente ma il processo del server continua a funzionare:
ssh myserver 'sleep 100 >&- 2>&- <&- &'
Oppure, se sono necessari più comandi:
ssh myserver '(echo one; sleep 100; echo two; sleep 200) >&- 2>&- <&- &'
Spiegazione:
>&-- chiudere l'handle stdout2>&-- chiudi stderr<&-- chiudi stdin&- mettere il processo in background
Questo non utilizza programmi esterni e dovrebbe funzionare su ksh, ash, Bourne shell, bash, ecc.