Wie kehrt man zu einem durch ssh ausgelösten Prozess zurück?

312
Shan-Desai

Ich verwende einige Raspberry Pi -2 und einen Ubuntu-Laptop (14.04 LTS) auf Ad-hoc-Art und Weise über WLAN. Ich habe einige python3Skripte, die ich normalerweise mit ssh -6(da ich IPv6-Link-Local-Adressen verwende ) auslöst, um mein Python3-Skript auszulösen.

Zum Beispiel:

ssh -6 pi@fe80::a1b2:c3ff:fed4:e5g6%wlan0 'python3 myScript.py' 

Um das Skript auf dem Sockel zu beenden, den ich verwende:

ssh -6 pi@fe80::a1b2:c3ff:fed4:e5g6%wlan0 'fuser -k portNumber/udp' 

Dadurch wird das Skript auf dem Himbeer-Pi ausgelöst. Wenn ich nicht CTRL+ verwende, Csehe ich natürlich die Ausgabe der Skripte auf meinem Terminal. Aber ich führe einige Experimente durch, bei denen ich normalerweise dem Terminal entkomme und das Skript auf dem Pis läuft (einige Socket-Programme!).

Ich möchte zum Skript auf dem Pi zurückkehren, ist das möglich? Ich meine, wenn ich noch einmal ssh -6an die Adresse des Pi gehe, kann ich tatsächlich zu dem Terminal gehen, wo der Prozess noch läuft? Soweit ich mich erinnere, kann ich die verschiedenen ttys des Pi nicht verwenden ssh.

Hinweis :

Ich bin mir wirklich nicht sicher, ob ich das hier oder auf ServerFault posten sollte. Bitte seien Sie so freundlich, mich zu führen!

0
`screen`,` tmux` macht vielleicht, was Sie wollen, aber es ist wirklich schwer zu verstehen, was Sie beschreiben wollen ... Jakuje vor 8 Jahren 0

1 Antwort auf die Frage

1
grawity

Sie können nicht mit einfachem ssh zum selben Terminal zurückkehren (das pty wird zerstört, sobald die Verbindung mit ssh getrennt wird). In der Tat gibt es kein Terminal, wenn Sie Befehle im "Batch-Modus" ausführen - einfach "raw stdout". (Es ist -tjedoch ein Terminal zu erzwingen.)

Sie können dies jedoch mit Terminal-Multiplexern wie tmux, screenoder machen dtach, die meist genau für diesen Zweck geschrieben werden:

ssh myserver "tmux new-session -d -n myscript ./myScript.py"  ssh -t myserver "tmux attach -n myscript"  ssh myserver "tmux kill-session -t myscript" 

Mit dtach:

ssh myserver "dtach -n ~/myscript.sock ./myScript.py"  ssh -t myserver "dtach -a ~/myscript.sock" 

Mit Bildschirm:

ssh myserver "screen -dmS myscript ./myScript.py"  ssh -t myserver "screen -r myscript" 
Hallo, ich brauche zum Beispiel einen kurzen Tipp, wenn ich Folgendes mache: `tmux new-session -d -s meineSession '. / Myscript.py'` und wenn ich mit' tmux attach -t mySession` eine Verbindung ansteige, kann ich sehen, wie mein Skript läuft . Jetzt möchte ich die Sitzung verlassen, ohne das Skript zu stoppen. Ich möchte nicht " CTRL+ C" verwenden, wie kann ich die Hotkeys in Tmux verwenden, um die Sitzung sicher zu beenden, ohne sie zu beenden. Es sollte so etwas wie ` CTRL` + ` B` dann ` :` und was mehr sein? Shan-Desai vor 8 Jahren 0
Ah! ich habe es nie gefunden! In der Sitzung brauche ich ` ctrl` + ` b` + ` z` Shan-Desai vor 8 Jahren 0
Auch der `ssh -t myserver 'tmux a'` oder `ssh -t myserver 'tmux attach -t myscript'` bringt mich in die Sitzung, aber ich kann das Befehlsfenster des `ssh` nicht verlassen, es bleibt dort hängen Shan-Desai vor 8 Jahren 0