HowTo: move running process to screen

Schonmal das Problem gehabt, dass man einen Prozess startet und sich danach denkt: Mist, haette ich den mal im screen ausgefuehrt? Passiert klassisch am Freitag Nachmittag wenn man SIGWOCHENENDE empfangen moechte. Fuer genau das Problem habe ich aber gerade eine Loesung gefunden: reptyr

Das Programm kann bei Debian oder Ubuntu einfach aus den Repositories installiert werden:

apt-get install reptyr

Anschliessend funktioniert das folgende Szenario:

  • Ein Terminal Fenster starten (T1) und folgenden Befehl eingeben:
    T1 - root@foo:~# tail -f /var/log/syslog
  • Ein zweites Terminal Fenster starten (T2) und als root einen screen starten:
    T2 - root@foo:~# screen
  • Im screen die PID fuer den Prozess raussuchen und anschliessend mit repryr holen:
    T2 - root@foo:~# pidof tail
    28802
    root@foo:~# reptyr 28802
  • Im T1 sieht man nun etwas wie folgt
    T1 - [1]+  Angehalten              tail -f /var/log/syslog
  • Im T1 nun mit dem folgenden Befehl sicher gehen dass alles sauber ist:
    T1 - root@foo:~# bg; disown
  • Im T1 nun etwas in die Logdatei schreiben und im screen anschauen, wie es geloggt wird:
    T1 - root@foo:~# logger foo

Man finde ich das praktisch! :-)