Screen erleichtert dem Administrator ungemein die Arbeit. Über nur eine SSH-Session kann man problemlos mehrere Terminal-Sitzungen laufen lassen und braucht sich keine Sorgen um das Abbrechen der Prozesse zu machen, wenn einmal die Netzwerkverbindung abbricht.
Doch was macht man, wenn man einmal einen wichigen Prozess ohne Screen gestartet hat und das betreffende Terminal (temorär) nicht erreichen kann? Argh! Solche Missgeschicke passieren mir üblicherweise wenn z.B. „badblocks“ auf der heimischen Konsole schon die ganze Nacht lief und ich von unterwegs mal schnell nach dem Status schauen möchte…
Das Programm der Wahl für mich ist dann reptyr – ‚a tool for „re-ptying“ programs‘. Via:
reptyr PID
lässt sich ein Programm z.B. auf die aktuelle Konsole bzw. screen-Session umleiten. Sicher es gibt auch das Skript „screenify“ – aber dies erfordert, dass GDB auf dem Server installiert ist, was ich aus Sicherheitsgründen strickt ablehne. Schließlich möchte man einem Einbrecher nicht noch zusätzlich einen Schlüsselbund mit Dietrichen dalassen.
Das Programm reptyr basiert auf dem ptrace System-Call, der unter einigen Distributionen deaktiviert ist. Die Sperre lässt sich temporär durch:
echo 0 > /proc/sys/kernel/yama/ptrace_scope
umgehen. Das permanente aktivieren des ptrace-System-Calls via /etc/sysctl.conf kann ich nicht ruhigen Gewissens empfehlen – und so oft wird man reptyr nicht benötigen. Ich habe mir ein Skript für reptyr angelegt, das automatisch die ptrace_scope-Sperre deaktiviert.
Reptyr kann man sich auf der Git-Seite des Projekts herunterladen.