Linux jobs-Befehl
jobsist ein integrierter Befehl in Linux/Unix-Systemen, der verwendet wird, um Hintergrundaufgaben in der aktuellen Shell-Sitzung anzuzeigen und zu verwalten. Er ermöglicht es Benutzern:
- Den Status aller Hintergrundjobs anzeigen
- Wechseln von Jobs zwischen Vordergrund und Hintergrund steuern
- Die Ausführung mehrerer gleichzeitiger Aufgaben verwalten
Wenn Sie im Terminal lang laufende Befehle ausführen,jobsDer Befehl kann Ihnen helfen, diese Hintergrundprozesse effizient zu verwalten.
Grundlegende Syntax
jobs [选项] [作业标识符]
Häufige Optionen
| Option | Beschreibung |
|---|---|
-l |
Die PID (Process ID) des Jobs anzeigen |
-p |
Nur die Prozessgruppen-ID des Jobs anzeigen |
-n |
Nur Jobs anzeigen, deren Status sich seit der letzten Benachrichtigung geändert hat |
-r |
Nur laufende Jobs anzeigen |
-s |
Nur angehaltene Jobs anzeigen |
Detaillierte Kernfunktionen
1. Hintergrundjobs anzeigen
Die einfachste Verwendung ist die direkte Eingabe vonjobscommand:
Beispiele
[1] - laufend sleep 100 &
[2] + angehalten vim file.txt
Erklärung der Ausgabe:
[1]: Job-Nummer (Job ID)-/+:-gibt den vorherigen Job an,+gibt den aktuellen Job anrunning/stopped: Job-Status- Der letzte Teil ist der Befehl, der den Job gestartet hat
2. Detaillierte Prozessinformationen anzeigen
Verwenden Sie die-lOption, um die Prozess-ID des Jobs anzuzeigen:
Beispiele
[1] - 12345 laufend sleep 100 &
[2] + 12356 gestoppt vim file.txt
3. Jobs nach spezifischem Status filtern
Beispiele
$ jobs -r
# Nur gestoppte Jobs anzeigen
$ jobs -s
Praktische Anwendungsszenarien
Szenario 1: Lang laufende Aufgaben im Hintergrund ausführen
Beispiele
$ long_running_command &
# Hintergrundjobs anzeigen
$ jobs
[1] + running long_running_command &
Szenario 2: Jobs anhalten und fortsetzen
Beispiele
$ vim file.txt
# Ctrl+Z drücken, um vim anzuhalten
^Z
[1] + angehalten vim file.txt
# Angehaltene Jobs anzeigen
$ jobs -s
[1] + angehalten vim file.txt
# vim in den Vordergrund zurückholen
$ fg %1
Szenario 3: Mehrere Hintergrundjobs verwalten
Beispiele
$ sleep 100 &
$ sleep 200 &
$ sleep 300 &
# Alle Jobs anzeigen
$ jobs -l
[1] 12345 laufend sleep 100 &
[2] -12356 laufend sleep 200 &
[3] +12367 laufend sleep 300 &
# Job 2 in den Vordergrund holen
$ fg %2
# Job 3 beenden
$ kill %3
Kombinationen von Job-Control-Befehlen
jobsWird normalerweise zusammen mit anderen Job-Control-Befehlen verwendet:
| Befehl | Beschreibung | Beispiel |
|---|---|---|
& |
Einen Befehl im Hintergrund ausführen | command & |
Ctrl+Z |
Den aktuellen Vordergrund-Job anhalten | Tastenkombination |
fg |
Einen Job in den Vordergrund holen | fg %1 |
bg |
Einen angehaltenen Job im Hintergrund weiterlaufen lassen | bg %2 |
kill |
Einen angegebenen Job beenden | kill %3 |
Häufig gestellte Fragen
F1: Warum werden Hintergrundjobs beendet, nachdem das Terminal geschlossen wurde?
A: Standardmäßig sind Hintergrundjobs mit der Terminal-Sitzung verbunden. Mitnohupoderdisownkönnen Jobs weiterlaufen, nachdem das Terminal geschlossen wurde:
Beispiele
F2: Wie verweist man auf einen bestimmten Job?
A: Verwenden Sie%plus der Jobnummer:
%1: Job 1%2: Job 2%+oder%%: Aktueller Job%-: Vorheriger Job
F3: Was ist der Unterschied zwischen den Befehlen jobs und ps?
A:
jobsZeigt nur Jobs in der aktuellen Shell-Sitzung anpsZeigt alle Systemprozesse an, einschließlich Prozesse anderer Benutzer und Terminals
Best-Practice-Empfehlungen
Ausgabe für Hintergrundjobs umleiten: Vermeiden, dass die Ausgabe das aktuelle Terminal beeinträchtigt
$ command > output.log 2>&1 &
Beschreibende Namen verwenden: Erleichtert das Identifizieren verschiedener Jobs
$ (sleep 300; echo "Done") &
Job-Status regelmäßig prüfen: Anhäufung einer großen Anzahl unerledigter Jobs verhindern
$ watch -n 60 jobs
nohup für wichtige Jobs verwenden: Sicherstellen, dass sie nach dem Trennen des Terminals weiterlaufen
$ nohup important_command &
Zusammenfassungs-Flussdiagramm

Linux-Befehlsreferenz