Linux im Griff

Job-Steuerung im Terminal (Bash)

Prozesse im Hintergrund laufen lassen, in den Vordergrund holen, von der Shell trennen und mehr.

Vielleicht kennt Ihr das: Man startet ein grafisches Programm aus dem Terminal und schon kann man die Shell nicht mehr nutzen, ohne das Programm zu beenden. Oder: Ihr wart cleverer und habt das Programm im Hintergrund gestartet - wollt es jetzt aber wieder im Vordergrund haben? Und noch mieser: Ihr schließt das Terminalfenster - und damit auch sämtliche gestarteten Programme, die aber eigentlich weiter laufen sollten ...

Vorder- und Hintergrund

Als Beispiel soll das GUI-Programme xeyes dienen. Standardmäßig startet Ihr xeyes unter Bash schlicht per:

xeyes

Damit läuft das Programm im Vordergrund - der Terminal ist für weitere Eingaben gesperrt. Wenn Ihr den Terminal aber weiter benutzen wollt, könnt Ihr xeyes Hintergrund starten:

xeyes &

Nun bleibt der Prompt im Terminal erhalten, Ihr könnt weiterarbeiten. Aber auch das bringt ein Problemchen mit sich: Das im Hintergrund laufende Programm könnt Ihr nicht ohne Weiteres mit STRG+Z pausieren. Auch schließen könnt Ihr das Tool nicht im Terminal via STRG+C, sondern nur über einen Klick auf das X am Fenster - sofern ein Fenster existiert!

Nun stellt sich eine Frage: Wie bekommt man bereits gestartete Programme in den Vorder- beziehungsweise Hintergrund? Wenn es im Vordergrund läuft, müsst Ihr das Programm erst mit STRG+Z pausieren und dann in den Hintergrund verfrachten, als wäre es direkt mit & gestartet worden:

STRG+Z
bg xeyes

Wenn es im Hintergrund läuft, könnt Ihr es direkt in den Vordergrund schubsen:

fg xeyes

Wenn Ihr wissen wollt, welche Jobs überhaupt aus der aktuellen Shell gestartet wurden, genügt ein simples

jobs

um alle Jobs anzuzeigen. fg und bg funktionieren natürlich auch über die Job-Nummern.

jobcontrol bash screenshot
1. Xeyes im Hintergrund starten.
2. Jobs auslesen.
3. Xeyes in Vordergrund holen.
4. Xeyes pausieren.
5. Xeyes zurück in Hintergrund.

Terminal schließen

Es bleibt das Problem mit dem Terminalfenster. Angenommen, Ihr habt jetzt drei Stunden lang etliche Programme aus ein und derselben Shell geöffnet und wollt sie auch offen lassen - die Shell/das Terminalfenster aber schließen. Schließt Ihr es einfach über exit oder das X am Fenster, werden auch alle daraus geöffneten Programme geschlossen. Zum Entkoppeln von xeyes könntet Ihr

disown xeyes

nutzen. Zum Entkoppeln aller (-a) laufenden (-r) Jobs tut es ein

disown -ar

Versucht es danach nochmal mit dem Befehl jobs: Ihr werdet keine Jobs mehr vorfinden und könnt das Terminalfenster gefahrlos schließen.

Jobs schließen

Ihr könnt Jobs natürlich auch gezielt schließen - allerdings nicht über die Job-Nummern, die noch bei bg/fg funktioniert haben. Ihr benötigt die Prozess-IDs, die Ihr via

jobs -l

auflisten lassen könnt. Angenommen zu Job Nummer 1, xeyes, wird 1234 angezeigt:

kill 1234

Das Kommando kill sendet hier sein Standard-Signal SIGTERM, das auf die Nummer 15 hört; von daher erledigt der folgende Befehl exakt das Gleiche wie der vorige:

kill -15 1234

kill kann 64 verschiedene Signale an Prozesse senden, wobei vor allem SIGKILL interessant ist, weil Ihr damit auch Prozesse/Jobs beenden könnt, die sich aufgehängt haben und daher nicht auf SIGTERM reagieren.

Weitere Artikel rund um die Kommandozeile findet Ihr hier, unsere hauseigene Linux-Hilfe für den Terminal im Terminal hier.

Mirco Lang

Freier Journalist, Exil-Sauerländer, (ziemlich alter) Skateboarder, Dipl.-Inf.-Wirt, Einzelhandelskaufmann, Open-Source-Nerd, Checkmk-Handbuchschreiber. Ex-Saturn'ler, Ex-Data-Becker'ler, Ex-BSI'ler. Computer-Erstkontakt: ca. 1982 - der C64 des großen Bruders eines Freunds. Wenn Ihr hier mehr über Open Source, Linux und Bastelkram lesen und Tutonaut unterstützen möchtet: Über Kaffeesponsoring via Paypal.freue ich mich immer. Schon mal im Voraus: Danke! Nicht verpassen: cli.help und VoltAmpereWatt.de. Neu: Mastodon

3 Kommentare

  1. Hallo, Ein toller Beitrag. Das habe ich wieder was gelernt.

    Ich schaue mir die Seite über Privacy Browser auf dem Smartphone an. Das solltest du auch mal tun. Die Seite sieht furchtbar aus. Bei mir sind alle Sperrlisten aktiviert. Da muss man so viel nachstellen, dass man etwas sieht, dass es keinen Spaß mehr macht. Bitte überarbeite deine Seite und entferne mindestens Java-Script. Es gibt so viele schlne statische Seiten, welche auch auf OSBN verteilt werden. Schau dir da etwas ab.

    Freundliche Grüße. Deine Anleitungen sind gut.

      1. Geld verdienen ist doch erlaubt. Ich bin auch der Meinung, dass die Seite optisch Flickschusterei ist.

Schreibe einen Kommentar

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

Schaltfläche "Zurück zum Anfang"