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.