Hintergrundprozesse unter Linux: Warum sie keine Eingaben akzeptieren – und wie screen hilft
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
- Neue Sitzung starten
screen -S meinprozessDadurch startet eine neuescreen-Sitzung mit dem Namenmeinprozess. - Programm innerhalb der Sitzung starten
Nun kann man innerhalb vonscreensein Skript oder Programm wie gewohnt ausführen:./mein-skript.sh - Sitzung verlassen (ohne zu beenden)
Mit der TastenkombinationStrg + A, dannD(für „detach“) wird die Sitzung in den Hintergrund geschickt. Der Prozess läuft weiter. - Zur Sitzung zurückkehren
Die laufendenscreen-Sitzungen lassen sich mitscreen -lsanzeigen. Mitscreen -r meinprozesskann man sich wieder mit der Sitzung verbinden.
Wichtige screen-Befehle
| Befehl | Funktion |
|---|---|
screen -S name | Neue Sitzung starten |
screen -ls | Liste aktiver Sitzungen |
screen -r name | Sitzung wiederherstellen |
Strg + A, dann D | Sitzung in den Hintergrund schicken (detachen) |
exit | Sitzung 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