Linux / Befehl jobs: Liste der Jobs in der aktuellen Shell

jobs zeigt die Hintergrundjobs und gestoppten Jobs an, die von der aktuellen Bash-Shell verwaltet werden. Es unterscheidet sich im Umfang von ps, das alle Prozesse auf dem System abfragt.

Die Jobnummer der Shell wird wie %1 angezeigt, und die Prozess-ID des Betriebssystems ist eine numerische PID. Ein Job kann aus mehreren Prozessen bestehen, zum Beispiel in einer Pipeline. Jobs, die von einem anderen Terminal oder einer anderen Shell gestartet wurden, erscheinen nicht in der jobs-Liste der aktuellen Shell.

Grundlegende Syntax

jobs [options] [job_specifier]

Installierte Implementierungen und Optionen können je nach Distribution variieren. Verwenden Sie help jobs, um die Beschreibung für das aktuelle System zu prüfen.

Beispiele

Starten eines Hintergrundjobs

Ein endendes & startet den Befehl als Hintergrundjob.

sleep 120 &

Überprüfen von Jobs in der aktuellen Shell

Überprüfen Sie die Jobnummer, den Status und den ursprünglichen Befehl.

jobs

Auch PID anzeigen

Vergleichen Sie die Jobnummer mit der tatsächlichen PID.

jobs -l

Lesen der Jobnummern der aktuellen Shell

jobs zeigt Hintergrund- oder angehaltene Jobs, die in der aktuellen Shell gestartet wurden, nicht systemweite Prozesse.

sleep 60 &
jobs -l

Beispielausgabe (PID und Jobnummern werden unterschiedlich sein):

[1]+ 12345 Running  sleep 60 &

[1] ist die Jobnummer in diesem Shell, und 12345 ist die Prozess-PID. Das Ausführen von jobs in einem anderen Terminal oder einem neuen Shell wird diesen Job nicht anzeigen. Wenn Sie den Job nach dem Schließen des Shells behalten müssen, ziehen Sie nohup, tmux oder einen Servicemanager in Betracht.

Hauptoptionen und Format

Optionen/Format Beschreibung
-l PID zusammen mit dem Jobstatus anzeigen.
-p Nur die repräsentative PID der Prozessgruppe des Jobs anzeigen.
-r Nur laufende Jobs anzeigen.
-s Nur gestoppte Jobs anzeigen.

Vorsichtsmaßnahmen bei der Verwendung

jobs ist ein eingebauter Shell-Befehl und fragt nur die Jobtabelle der aktuellen Shell ab. Die Jobkontrolle kann in Skripten oder nicht-interaktiven Shells deaktiviert sein. Der sleep-Job im Beispiel wird nach einiger Zeit aus der Liste verschwinden, und wenn er bestehen bleibt, kann er mit der Jobnummer der Shell wie kill %1 beendet werden.

Häufig gestellte Fragen

Warum sind jobs leer, obwohl Prozesse in ps sichtbar sind?

Der Grund ist, dass jobs nur die Aufgaben anzeigt, die derzeit von der Shell gestartet und verwaltet werden, während ps die Liste der Systemprozesse abfragt.

Offizielle Dokumentation

Sie können das genaue Verhalten der Optionen und Unterschiede je nach Implementierung in der offiziellen Dokumentation zu Jobs nachlesen.