GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Ausführen eines lang andauernden Befehls auf ssh

Lösung 1:

Am besten verwenden Sie screen (auf dem Server), um eine Sitzung zu starten, in der der Befehl ausgeführt wird, und dann den Bildschirm zu trennen, damit er weiter ausgeführt wird und Sie andere Dinge tun können, oder einfach die Verbindung zum Server trennen. Die andere Option ist die Verwendung von nohup in Kombination mit & Sie hätten also nohup <command> &

Lösung 2:

Sie können auch disown verwenden wenn Sie den Vorgang bereits ohne screen gestartet haben oder nohup

Lösung 3:

Die vorhandenen Antworten können gut funktionieren, aber ich brauchte etwas für BusyBox (eine Shell und eine Reihe von Tools für minimale Hardware wie Heimrouter). Mein System hat screen nicht , dtach , at , disown , oder sogar nohup ! Also dank tbc0 auf SO (Link) habe ich dieses Juwel gefunden. Es kehrt sofort zurück, aber der Serverprozess läuft weiter:

ssh myserver 'sleep 100 >&- 2>&- <&- &'

Oder, wenn mehrere Befehle benötigt werden:

ssh myserver '(echo one; sleep 100; echo two; sleep 200) >&- 2>&- <&- &'

Erklärung:

  • >&- - Stdout-Handle schließen
  • 2>&- - stderr schließen
  • <&- - stdin schließen
  • & - Prozess in den Hintergrund stellen

Dies verwendet keine externen Programme und sollte mit ksh, ash, Bourne-Shell, bash usw. funktionieren.


Linux
  1. So finden Sie aktive SSH-Verbindungen unter Linux

  2. So verwenden Sie den Befehl „screen“ unter Linux

  3. Wie lösche ich das Scrollback im Bildschirmbefehl?

  4. Übergeben von Variablen im Remote-SSH-Befehl

  5. Linux Befehl remote ausführen

SSH-Befehl

So übergeben Sie das Passwort an den SSH-Befehl in Linux

Bildschirmbefehl unter Linux erklärt

Text auf der Terminalausgabe suchen?

So verwenden Sie den Bildschirmbefehl unter Linux

Linux-Befehl zum Warten auf das Hochfahren eines SSH-Servers