GNU/Linux >> Linux Esercitazione >  >> Linux

Eseguendo un comando di lunga durata su ssh

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 stdout
  • 2>&- - chiudi stderr
  • <&- - chiudi stdin
  • & - mettere il processo in background

Questo non utilizza programmi esterni e dovrebbe funzionare su ksh, ash, Bourne shell, bash, ecc.


Linux
  1. Carattere speciale '#' nel comando Perl Ssh?

  2. Il comando di sospensione tramite il comando dello schermo non viene visualizzato in Ps?

  3. Come utilizzare il comando dello schermo di Linux

  4. Come cancellare lo scrollback nel comando dello schermo?

  5. SSH - Come includere il comando -t nel file ~/.ssh/config

Comando SSH

Come passare la password al comando SSH in Linux

Spiegazione del comando dello schermo su Linux

Cerca testo sull'output del terminale?

Come usare il comando schermo in Linux

linux esegue il comando da remoto