Abgestürtze SSH Session: Wieder verbinden zu laufenden Prozessen

Manchmal passiert es: Die SSH session bricht ab, sei es aufgrund längerer Inaktivität, oder Verbindungsunterbruch. Vor allem, wenn man wichtige Kommandos eingegeben hatte, möchte man diese zwecks Rückverfolgung in der history behalten. – Dies ist bei einem Session-Unterbruch normalerweise nicht der Fall, da die bash-history immer erst beim logout geschrieben wird.

Oder man hat z.B. eine Datei mit vim geöffnet und möchte diese nach dem neu verbinden weiter bearbeiten.

Inhalt

Bash-History retten

Da aber bei einem Verbindungsabbruch der bash-Prozess noch läuft, reicht es sich nochmals im System einzuloggen, danach mit

ps -ef

herauszufinden welcher der letzte bash Prozess es war (normalerweise die zweitletzte pts/x Nummer) und dessen PID mit dem HUP-Signal zu killen:

kill -1 $PID

Nun wird der Bash Prozess ordentlich beendet und die history ins file: „~/.bash_history“ geschrieben.

Offene vim session

War man vor dem Verbindungsabbruch z.B. gerade eine Datei mit vim am bearbeiten reicht es nicht, wenn man den vim Prozess abschiesst und man würde gerne einfach die vim session wieder öffnen.

Dies geht mit dem Tool reptyr das eine laufendes Programm einem neuen Terminal zuordnet.

Mittels pidof vim oder ps aux | grep vim findet man die entpsrechende PID heraus und übergibt diese dann an reptyr:

reptyr 12345

[stextbox id=“note“ caption=“Fehlermeldung: Unable to attach to pid 12345: Operation not permitted“]
Sollte man die Fehlermeldung:

Unable to attach to pid 12345: Operation not permitted

bekommen, so liegt das am ptrace scope welcher auf 0 (anstelle von 1) gesetzt werden sollte:

echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope

[/stextbox]

Published by

Steven Varco

Steven ist ein Redhat RHCE- und Kubernetes CKA Zertifizierter Linux-Crack und ist seit über 20 Jahren sowohl beruflich wie auch privat auf Linux spezialisiert. In seinem Keller steht ein Server Rack mit diversen ESX und Linux Servern.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert