Artikel

Hintergrundprozesse unter Linux: Warum sie keine Eingaben akzeptieren – und wie screen hilft

Linux

Wer unter Linux Skripte oder Programme im Hintergrund ausführt, stößt schnell auf ein Problem: Sie akzeptieren keine Benutzereingaben mehr. Woran liegt das – und wie kann man das umgehen? Die Lösung heißt screen.

Warum Prozesse im Hintergrund laufen lassen?

Es gibt viele Gründe, Programme im Hintergrund auszuführen:

  • Ein langer Download oder ein Backup soll nicht die aktive Sitzung blockieren.
  • Ein Server-Dienst muss weiterlaufen, auch wenn sich der Benutzer abmeldet.
  • Eine rechenintensive Aufgabe läuft über Stunden oder Tage.

Typischerweise setzt man dafür ein & ans Ende eines Befehls:

mein-skript.sh &

Oder nutzt nohup, um sicherzustellen, dass der Prozess auch nach dem Schließen des Terminals weiterläuft:

nohup mein-skript.sh > output.log 2>&1 &

Beide Methoden haben jedoch einen Nachteil: Sie trennen den Prozess von der Eingabe (stdin). Interaktive Programme wie vim, htop oder Scripts, die auf Benutzereingaben warten, funktionieren nicht mehr wie gewünscht.

Die Lösung: screen

Mit screen kann man eine virtuelle Terminal-Sitzung starten, die auch nach dem Abmelden oder Schließen des Terminals bestehen bleibt. Der Vorteil: Man kann jederzeit wieder darauf zugreifen und interagieren, als wäre nichts passiert.

Installation

Die meisten Distributionen haben screen bereits in ihren Paketquellen:

# Debian/Ubuntu
sudo apt install screen

# Red Hat/CentOS
sudo yum install screen

# Arch Linux
sudo pacman -S screen

Nutzung

  1. Neue Sitzung starten screen -S meinprozess Dadurch startet eine neue screen-Sitzung mit dem Namen meinprozess.
  2. Programm innerhalb der Sitzung starten
    Nun kann man innerhalb von screen sein Skript oder Programm wie gewohnt ausführen: ./mein-skript.sh
  3. Sitzung verlassen (ohne zu beenden)
    Mit der Tastenkombination Strg + A, dann D (für „detach“) wird die Sitzung in den Hintergrund geschickt. Der Prozess läuft weiter.
  4. Zur Sitzung zurückkehren
    Die laufenden screen-Sitzungen lassen sich mit screen -ls anzeigen. Mit screen -r meinprozess kann man sich wieder mit der Sitzung verbinden.

Wichtige screen-Befehle

BefehlFunktion
screen -S nameNeue Sitzung starten
screen -lsListe aktiver Sitzungen
screen -r nameSitzung wiederherstellen
Strg + A, dann DSitzung in den Hintergrund schicken (detachen)
exitSitzung beenden

Fazit

Wenn man ein interaktives Programm im Hintergrund laufen lassen will, reicht ein einfaches & oder nohup nicht aus. screen bietet eine einfache Lösung, um jederzeit zurückkehren und weiterarbeiten zu können. Es ist ein unverzichtbares Werkzeug für alle, die mit langen Prozessen oder Serverdiensten arbeiten.

0 Kommentare