Linux jobs-Befehl

Linux 命令大全Linux-Befehlsreferenz

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

$ jobs
[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 an
  • running/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

$ jobs -l
[1]  - 12345 laufend    sleep 100 &
[2]  + 12356 gestoppt    vim file.txt

3. Jobs nach spezifischem Status filtern

Beispiele

# Nur laufende Jobs anzeigen
$ jobs -r

# Nur gestoppte Jobs anzeigen
$ jobs -s

Praktische Anwendungsszenarien

Szenario 1: Lang laufende Aufgaben im Hintergrund ausführen

Beispiele

# Eine zeitaufwändige Aufgabe starten und in den Hintergrund verschieben
$ long_running_command &

# Hintergrundjobs anzeigen
$ jobs
[1]  + running long_running_command &

Szenario 2: Jobs anhalten und fortsetzen

Beispiele

# vim starten
$ 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

# Drei Hintergrundaufgaben starten
$ 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

$ nohup long_running_command &

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 an
  • psZeigt alle Systemprozesse an, einschließlich Prozesse anderer Benutzer und Terminals

Best-Practice-Empfehlungen

  1. Ausgabe für Hintergrundjobs umleiten: Vermeiden, dass die Ausgabe das aktuelle Terminal beeinträchtigt

    $ command > output.log 2>&1 &
  2. Beschreibende Namen verwenden: Erleichtert das Identifizieren verschiedener Jobs

    $ (sleep 300; echo "Done") & 
  3. Job-Status regelmäßig prüfen: Anhäufung einer großen Anzahl unerledigter Jobs verhindern

    $ watch -n 60 jobs
  4. nohup für wichtige Jobs verwenden: Sicherstellen, dass sie nach dem Trennen des Terminals weiterlaufen

    $ nohup important_command &

Zusammenfassungs-Flussdiagramm

Linux 命令大全Linux-Befehlsreferenz

Andere Erweiterungen