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ßen2>&-
- 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.