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

Verhindert, dass die aktuell ausgeführte Linux-Aufgabe nach dem Abmelden von SSH beendet wird

Wenn Ihre Aufgabe bereits gestartet wurde, ist es zu spät* um alternative Lösungen in Betracht zu ziehen, die eine zusätzliche Schicht zwischen Ihren ssh einfügen Sitzung und die Shell, die den Befehl ausführt, wie screen , tmux , byobu , nohup und dergleichen.

Wenn Ihre Prozessunterstützung in den Hintergrund gestellt werden soll und vor allem nicht hängen bleibt, wenn stdout und stderr nicht beschreibbar/geschlossen sind, können Sie es in den Hintergrund schalten, bevor Sie sich mit Control abmelden Z und bg Trennen Sie es dann mit disown von Ihrer Shell eingebaut.

zB:

$ ssh localhost
You have new mail.
Last login: Fri Jun  6 11:26:56 2014

$ /bin/sleep 3600    


^Z[1] + Stopped                  /bin/sleep 3600
$ bg
[1] /bin/sleep 3600&
$ jobs
[1] +  Running                 /bin/sleep 3600
$ disown %1
$ exit
Connection to localhost closed.
$ ps -ef|grep sleep
jlliagre 12864     1  0 21:12 ?        00:00:00 /bin/sleep 3600
jlliagre 13056 12477  0 21:13 pts/18   00:00:00 grep sleep
$ 

* Wie Bob kommentierte, gibt es tatsächlich mehrere hackige Methoden, um eine tty-Sitzung unter Linux neu zuzuordnen. repty, retty, injcode und neercs. Das fortschrittlichste scheint reptyr zu sein, aber Sie benötigen möglicherweise Root-Rechte, damit ptrace Ihren Prozess hacken kann.


Eine Lösung ist die Verwendung von GNU screen. Sie könnten screen starten , führen Sie Ihren Befehl aus und trennen Sie ihn dann mit C-a d . Um die Verbindung später wieder herzustellen, führen Sie screen -r aus , und Sie befinden sich wieder in Ihrer vorherigen Sitzung.

Weitere Vorteile von screen sind die Fensterverwaltung (so dass Sie zu anderen Shells wechseln können, während Ihr Befehl ausgeführt wird, ohne dass eine neue SSH-Verbindung erforderlich ist), und es ermöglicht, dass Ihr Befehl im Vordergrund bleibt, egal ob in der aktuellen oder einer späteren Sitzung.

Bearbeiten: Wie in den Kommentaren erwähnt, funktioniert dies nur, wenn Sie daran denken, screen zu starten bevor Sie den Befehl ausführen. Wenn der Befehl bereits ausgeführt wird, benötigen Sie die Lösung von @jlliagre.


Linux
  1. Planen Sie eine Aufgabe mit dem Linux-Befehl at

  2. So finden Sie aktive SSH-Verbindungen unter Linux

  3. 4 Möglichkeiten, einen Befehl weiter auszuführen, nachdem Sie sich von der SSH-Sitzung abgemeldet haben

  4. SCP-Linux-Befehl – ​​So übertragen Sie SSH-Dateien von Remote auf Lokal

  5. Wie man SSH unter Linux von Android aus macht

Programmieren Sie Hardware über die Linux-Befehlszeile

So entfernen Sie einen Befehl aus dem Verlauf in Linux

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

12 Dinge, die nach der Installation eines Linux-Servers zu tun sind

Führen Sie den sudo-Befehl unter Linux von plink.exe [Windows] aus

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