Wie man die Anhaltung von Terminal-Jobs handhabt

LinuxBeginner
Jetzt üben

Einführung

Das Linux-Terminal ist ein leistungsstarkes Werkzeug, das es Benutzern ermöglicht, über eine Befehlszeilenschnittstelle mit dem Betriebssystem zu interagieren. Eines der zentralen Merkmale des Linux-Terminals ist die Fähigkeit, Jobs (Prozesse, die gerade laufen) zu verwalten und zu steuern. In diesem Tutorial werden die Grundkonzepte von Linux-Terminal-Jobs, ihre Anwendungen untersucht und Techniken zum Anhalten und Fortsetzen von Terminal-Jobs demonstriert.

Grundlagen zu Linux-Terminal-Jobs

Das Linux-Terminal ist ein leistungsstarkes Werkzeug, das es Benutzern ermöglicht, über eine Befehlszeilenschnittstelle mit dem Betriebssystem zu interagieren. Eines der zentralen Merkmale des Linux-Terminals ist die Fähigkeit, Jobs (Prozesse, die gerade laufen) zu verwalten und zu steuern. In diesem Abschnitt werden die Grundkonzepte von Linux-Terminal-Jobs, ihre Anwendungen untersucht und einige Codebeispiele demonstriert.

Was sind Linux-Terminal-Jobs?

Im Linux-Terminal bezieht sich ein Job auf einen Prozess, der im Vordergrund oder Hintergrund läuft. Wenn ein Benutzer einen Befehl im Terminal ausführt, erstellt die Shell einen neuen Prozess, um diesen Befehl auszuführen, und dieser Prozess wird als Job betrachtet. Jobs können interaktiv sein, wenn der Benutzer Eingaben an den laufenden Prozess liefert, oder nicht-interaktiv, wenn der Prozess ohne Benutzerintervention läuft.

Anzeigen und Steuern von Jobs

Das Linux-Terminal bietet mehrere Befehle, um Jobs anzuzeigen und zu steuern:

  • jobs: Dieser Befehl listet alle Jobs auf, die derzeit in der aktuellen Shell-Sitzung laufen.
  • fg: Dieser Befehl bringt einen angehaltenen Job in den Vordergrund, sodass der Benutzer mit ihm interagieren kann.
  • bg: Dieser Befehl setzt einen angehaltenen Job im Hintergrund fort.

Hier ist ein Beispiel, wie diese Befehle verwendet werden können:

## Start a long-running process in the background
$ sleep 60 &
[1] 12345

## List the running jobs
$ jobs
[1]+ Running sleep 60 &

## Suspend the job by pressing Ctrl+Z
^Z
[1]+ Stopped sleep 60

## Resume the job in the background
$ bg
[1]+ sleep 60 &

## Bring the job to the foreground
$ fg
sleep 60

In diesem Beispiel starten wir einen langlaufenden sleep 60-Befehl im Hintergrund, halten ihn mit Ctrl+Z an, setzen ihn mit bg im Hintergrund fort und bringen ihn dann mit fg in den Vordergrund.

Job-Steuerung und Prozesshierarchie

Linux-Terminal-Jobs sind Teil einer Prozesshierarchie, bei der jeder Job ein Kindprozess des Shell-Prozesses ist. Diese Hierarchie ermöglicht fortgeschrittene Job-Steuerungstechniken, wie:

  • Beenden eines Jobs und aller seiner Kindprozesse
  • Überwachen des Job-Status und der Ressourcenauslastung
  • Umleiten der Eingabe/Ausgabe von Jobs

Die Prozesshierarchie kann mithilfe eines Prozessbaums visualisiert werden, der mit dem pstree-Befehl generiert werden kann.

graph TD
    shell[Shell Process]
    job1[Job 1]
    job2[Job 2]
    job3[Job 3]

    shell --> job1
    shell --> job2
    shell --> job3

In diesem Beispiel ist der Shell-Prozess der Elternprozess der drei Job-Prozesse.

Indem Benutzer die Konzepte von Linux-Terminal-Jobs und die Prozesshierarchie verstehen, können sie die Ausführung ihrer Befehle und Anwendungen effektiv verwalten und steuern, was zu effizienteren und produktiveren Arbeitsabläufen führt.

Anhalten und Fortsetzen von Terminal-Jobs

Im Linux-Terminal ist die Fähigkeit, Jobs anzuhalten und fortzusetzen, ein leistungsstarkes Merkmal, das es Benutzern ermöglicht, ihre laufenden Prozesse effektiver zu verwalten. In diesem Abschnitt werden die Konzepte und Techniken untersucht, die beim Anhalten und Fortsetzen von Terminal-Jobs involviert sind.

Anhalten von Jobs

Das Anhalten eines Jobs im Linux-Terminal bedeutet, seine Ausführung zu pausieren, sodass der Benutzer ihn später fortsetzen oder in den Hintergrund verschieben kann. Dies wird normalerweise mit der Tastenkombination Strg+Z durchgeführt, die ein SIGTSTP-Signal an den aktuell laufenden Job sendet und ihn dadurch stoppt.

Sobald ein Job angehalten ist, kann er mit dem jobs-Befehl aufgelistet werden, der den Status des Jobs als "Gestoppt" anzeigt. An diesem Punkt kann der Benutzer den Job entweder im Vordergrund mit dem fg-Befehl fortsetzen oder ihn mit dem bg-Befehl in den Hintergrund verschieben.

Hier ist ein Beispiel:

## Start a long-running process
$ sleep 60
^Z
[1]+ Stopped sleep 60

## List the suspended job
$ jobs
[1]+ Stopped sleep 60

## Resume the job in the foreground
$ fg
sleep 60

## Suspend the job again
^Z
[1]+ Stopped sleep 60

## Move the job to the background
$ bg
[1]+ sleep 60 &

Fortsetzen von angehaltenen Jobs

Um einen angehaltenen Job fortzusetzen, können Sie den fg-Befehl verwenden, um ihn in den Vordergrund zu bringen, oder den bg-Befehl, um ihn im Hintergrund fortzusetzen.

Wenn ein Job im Vordergrund fortgesetzt wird, kann der Benutzer direkt mit ihm interagieren, indem er Eingaben liefert oder seine Ausgabe überwacht. Wenn ein Job im Hintergrund fortgesetzt wird, läuft er ohne Benutzerintervention weiter, und der Benutzer kann zum Shell-Prompt zurückkehren, um andere Aufgaben auszuführen.

Es ist wichtig zu beachten, dass der Zustand eines Jobs beim Anhalten und Fortsetzen beibehalten wird, sodass der Benutzer die Aufgabe an der Stelle fortsetzen kann, an der sie pausiert wurde.

Indem Benutzer verstehen, wie sie Terminal-Jobs anhalten und fortsetzen können, können sie ihre Arbeitsabläufe effektiv verwalten, langlaufende Aufgaben pausieren und zwischen mehreren Prozessen wechseln, was zu einer effizienteren und produktiveren Terminal-Erfahrung führt.

Fortgeschrittene Techniken zur Job-Steuerung

Während die grundlegenden Befehle zur Verwaltung von Jobs im Linux-Terminal, wie jobs, fg und bg, unerlässlich sind, gibt es auch fortgeschrittene Techniken, mit denen Benutzer einen größeren Einfluss auf ihre laufenden Prozesse nehmen können. In diesem Abschnitt werden einige dieser fortgeschrittenen Job-Steuerungstechniken untersucht.

Beenden von Jobs

Neben dem Anhalten und Fortsetzen von Jobs können Benutzer auch laufende Jobs mit dem kill-Befehl beenden. Dieser Befehl sendet ein Signal an den Zielprozess, das verwendet werden kann, um den Prozess ordnungsgemäß herunterzufahren oder seine Beendigung zu erzwingen.

## Start a long-running process
$ sleep 60 &
[1] 12345

## Terminate the job
$ kill %1
[1]+ Terminated sleep 60

In diesem Beispiel verwenden wir den kill-Befehl mit der Job-Nummer (%1), um den im Hintergrund laufenden sleep 60-Prozess zu beenden.

Job-Planung und Automatisierung

Linux-Benutzer können auch Jobs planen, um zu bestimmten Zeiten oder in bestimmten Intervallen ausgeführt zu werden, indem sie Tools wie cron und at nutzen. Dies ermöglicht die Automatisierung von wiederholten Aufgaben wie Backups, Systemwartung oder Datenverarbeitung.

Hier ist ein Beispiel für die Verwendung von cron zur Planung eines Jobs:

## Edit the crontab
$ crontab -e

## Add a cron job to run a script every weekday at 8 AM
0 8 * * 1-5 /path/to/script.sh

Dieser Cron-Job wird das script.sh-Skript jeden Wochentag (Montag bis Freitag) um 8 Uhr morgens ausführen.

Job-Überwachung und -Berichterstattung

Um den Status und die Ressourcenauslastung von laufenden Jobs zu überwachen, können Benutzer Tools wie top, htop und ps nutzen. Diese Tools liefern detaillierte Informationen über die auf dem System laufenden Prozesse, einschließlich ihrer CPU- und Speicherauslastung sowie des Benutzers und des Befehls, der mit jedem Prozess verbunden ist.

$ top
Tasks: 193 total,   1 running, 192 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.3 us,  0.3 sy,  0.0 ni, 99.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  3921036 total,   226748 free,   641124 used,  3053164 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.  2666448 avail Mem

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 12345 user      20   0   10.0m   2.4m   1.4m S   0.3  0.1   0:00.13 sleep

Diese top-Ausgabe zeigt die derzeit laufenden Prozesse, einschließlich des sleep-Jobs, den wir zuvor gestartet haben.

Indem Linux-Benutzer diese fortgeschrittenen Job-Steuerungstechniken nutzen, können sie eine feinere Kontrolle über ihre laufenden Prozesse erlangen, wiederholte Aufgaben automatisieren und die Leistung und Ressourcenauslastung ihrer Anwendungen überwachen, was zu einer effizienteren und produktiveren Terminal-Erfahrung führt.

Zusammenfassung

In diesem Tutorial haben Sie die Grundkonzepte von Linux-Terminal-Jobs kennengelernt, einschließlich der Anzeige und Steuerung dieser Jobs mit Befehlen wie jobs, fg und bg. Sie haben auch die Job-Steuerung und die Prozesshierarchie im Linux-Terminal untersucht, die fortgeschrittene Job-Verwaltungstechniken ermöglichen. Indem Sie diese Fähigkeiten verstehen und anwenden, können Sie Ihre Effizienz bei der Arbeit an der Befehlszeile steigern und die laufenden Prozesse in der Linux-Umgebung effizient verwalten.