Der Jobs-Befehl in Linux ermöglicht dem Benutzer, direkt mit Prozessen in der aktuellen Shell zu interagieren.
Jobs haben unter Linux drei mögliche Zustände:Vordergrund, Hintergrund und gestoppt.
Was bedeutet das? Ich werde gleich mehr erklären. Schauen wir uns zunächst einige der Tools an, die in den Jobs-Befehl integriert sind.
Job Control hat verschiedene Funktionen. Jeder kann unabhängig ausgeführt werden. Hier ist eine Tabelle der Befehle, die sich auf Job Control beziehen.
Befehl | Beschreibung |
---|---|
Jobs | Listet Jobs in der aktuellen Shell auf |
bg %n | Prozess in den Hintergrund schicken |
fg %n | Prozess in den Vordergrund bringen |
In der Tabelle n steht für die Nummer der entsprechenden Job-ID.
Jobsteuerung in Linux verstehen
Was ist überhaupt ein Job? Jobs, Prozesse und Aufgaben sind Wörter, die oft synonym verwendet werden.
Es gibt tatsächlich einige kleine Unterschiede, die für die Übersichtlichkeit wichtig sind.
Der Unterschied kann darauf reduziert werden, welche Entität die Aufgaben bearbeitet. Benutzer besitzen Jobs, während der Kernel Prozesse besitzt.
Unter Linux kann ein Job ein einzelner Prozess sein oder viele untergeordnete Prozesse oder Unterprozesse haben.
Ein Beispiel hierfür kann ein Job sein, der mehrere über Pipe geleitete Befehle wie diesen enthält:
cat file1 | sort | uniq
Es parst die Ausgabe der Datei und sortiert nach uniq-Werten, indem es die Kombination aus sort- und uniq-Befehlen verwendet.
Beim Personal Computing verarbeitet das Betriebssystem die meisten Prozesse automatisch. Dies ist normalerweise für die Anforderungen des Systems oder die Priorität einer bestimmten Aufgabe optimiert. Diese Prozesse werden vom Kernel abgeschlossen und erhalten eine Prozess-ID (PID).
Wie man Jobs unter Linux kontrolliert
Wenn Sie eine neue Shell öffnen, können Sie Ihre eigenen Jobs erstellen. Tatsächlich passiert genau das, wenn Sie einen Befehl (oder eine Reihe von Befehlen) in ein Terminal eingeben.
Auf Benutzerebene – von einer Shell aus können Sie Jobs manuell in den Hintergrund schicken, sie in den Vordergrund bringen oder sie anhalten (mit Strg+z).
Lassen Sie uns also das, was Sie bisher gelernt haben, anhand einiger Beispiele in die Praxis umsetzen.
Beispiel 1:Jobs in den Hintergrund senden
Es ist einfach, einen Auftrag im Hintergrund an die Arbeit zu senden. Sie müssen Ihren Befehl nur mit einem & anhängen (kaufmännisches Und)-Symbol.
[email protected]:~$ nano Linux_Handbook &
[1] 2860
Sie können sehen, dass dieser Befehl die Auftragsnummer in Klammern zurückgibt. Die folgende Nummer ist die vom Kernel verwendete Prozess-ID.
Beispiel 2:Jobs anzeigen
Wenn Sie versucht haben, den Befehl jobs einzugeben, könnten Sie verwirrt sein, dass scheinbar nichts passiert ist. Dies liegt daran, dass in der Shell keine aktiven Jobs vorhanden waren. Nachdem Sie nun einen Job ausgeführt haben, können Sie den Befehl jobs erfolgreich ausführen.
[email protected]:~$ jobs
[1]+ Stopped nano Linux_Handbook
Die PID-Nummer ist hier nicht aufgeführt, aber Sie brauchen sie nicht. Sie steuern Jobs über die benutzer-/shellspezifische Job-ID.
Beispiel 3:Bringen Sie Jobs in den Vordergrund
Sie können diese Job-ID verwenden, um Ihre nano-Instanz in den Vordergrund zu bringen.
[email protected]:~$ fg %1
Wenn Sie mitverfolgt haben, sollten Sie mit Ihrer Datei namens Linux Handbook.
zu Nano gelangenBeispiel 4:Stoppen Sie einen Job mit Strg+z
Sie können offene Jobs stoppen, indem Sie Strg+z verwenden. Hier ist ein Screenshot, der zeigt, wie man dies mit top.
verwendetIm Screencast können Sie sehen, wie ich oben öffne, es mit Strg+z anhalten, es in meiner Jobliste anzeigen und es dann wieder in den Vordergrund bringen, bevor Sie es schließen.
Beispiel 5:Hintergrundjobs mit bg ausführen
Sie können Jobs zwar mit dem &-Symbol in den Hintergrund schicken, aber es ist immer gut, eine Alternative zu haben. Im Screencast haben Sie gesehen, wie ich den Job mit Strg+Z beendet habe. Mit fg %n habe ich den Job wieder in die Shell und in den Vordergrund geholt Befehl. Sie können dasselbe mit bg tun .
Ich werde eine GUI-Anwendung verwenden, nur um die Dinge zu ändern. Sie haben in der Vergangenheit vielleicht bemerkt, dass beim Öffnen einer GUI vom Terminal aus auch die GUI geschlossen wird, wenn Sie das Terminal schließen. Hoffentlich hat dieser Artikel für Sie geklärt, warum das passiert.
Verwenden wir also Gedit. Ich werde Folgendes tun:
- Gedit starten
- Zurück zur Shell und Strg+z
- Sende es mit bg an den Hintergrund zur Ausführung
- Überprüfen Sie meine Jobliste, um sicherzustellen, dass sie ausgeführt wird
- Kehren Sie in den Vordergrund zurück und senden Sie einen System-Interrupt mit Strg+c, um ihn zu beenden
[email protected]:~$ gedit
^Z
[1]+ Stopped gedit
[email protected]:~$ bg %1
[1]+ gedit &
[email protected]:~$ jobs
[1]+ Stopped gedit
[email protected]:~$ fg %1
gedit
^C
Bonus-Tipp zu Kündigungsjobs unter Linux
Viele von uns sind es gewohnt, Strg+C zu verwenden, um Jobs in einer Shell zu beenden. Es gibt eine andere Möglichkeit, dies zu tun, als Ihr neues Wissen zur Jobsteuerung einzubeziehen.
[email protected]:~$ fg %1
gedit
^Z
[1]+ Stopped gedit
[email protected]:~$ kill %1
Richtig, der Kill-Befehl kann zusammen mit der Job-ID auch verwendet werden, um einen Job zu beenden.
Fazit
Das Erlernen der Linux-Befehlszeile bringt uns dem Innenleben unseres bevorzugten Betriebssystems näher. Das Erlernen der Jobsteuerung gibt uns die Möglichkeit, mehrere Jobs gleichzeitig zu bearbeiten.
Ich hoffe, dass Sie mit diesem Artikel etwas Neues gefunden haben, das Sie entdecken können. Wenn es Ihnen gefallen hat, teilen Sie uns dies bitte im Kommentarbereich unten mit oder verwenden Sie die Links, um es in den sozialen Medien zu teilen.