So führen Sie Linux-Befehle im Hintergrund aus

So führen Sie Linux-Befehle im Hintergrund aus

Wenn Sie einen Befehl im Terminal ausführen, müssen Sie normalerweise warten, bis der aktuelle Befehl abgeschlossen ist, bevor Sie mit der Eingabe eines anderen Befehls beginnen können. Dies wird als Ausführen des Befehls im Vordergrund oder als Vordergrundprozess bezeichnet. Wenn ein Prozess im Vordergrund ausgeführt wird, belegt er Ihre Shell und Sie können über Ihre Eingabegeräte mit ihm interagieren.

Was sollten Sie also tun, wenn die Ausführung eines Befehls lange dauert und Sie gleichzeitig andere Befehle ausführen möchten? Es stehen mehrere Optionen zur Auswahl. Die naheliegendste und direkteste Möglichkeit besteht darin, eine neue Shell-Sitzung zu starten und den Befehl von dort aus auszuführen. Eine andere Möglichkeit besteht darin, den Befehl im Hintergrund auszuführen.

Ein Hintergrundprozess ist ein Prozess/Befehl, der nach dem Start des Terminals im Hintergrund ausgeführt wird und nicht mit dem Benutzer interagiert.

In diesem Artikel besprechen wir Hintergrundprozesse in Linux. Wir zeigen Ihnen, wie Sie einen Befehl im Hintergrund starten und den Prozess bis zum Ende der Sitzung laufen lassen.

Führen Sie einen Linux-Befehl im Hintergrund aus

Um einen Befehl im Hintergrund auszuführen, fügen Sie nach dem Befehl ein Et-Zeichen ( & ) hinzu:

Befehl &

Die Task-ID der Shell (der in Klammern eingeschlossene Inhalt) und die Prozess-ID werden auf dem Terminal ausgegeben:

[1] 25177

Sie können mehrere Prozesse gleichzeitig im Hintergrund ausführen.

Der Hintergrundprozess schreibt weiterhin Informationen auf das Terminal. Um stdout und stderr -Meldungen zu unterdrücken, verwenden Sie die folgende Syntax:

Befehl > /dev/null 2>&1 &

>/dev/null 2>&1 bedeutet, stdout /dev/null und stderr nach sdtout umzuleiten.

Verwenden Sie den Befehl jobs , um den Status aller angehaltenen und im Hintergrund laufenden Aufgaben in der aktuellen Shell-Sitzung anzuzeigen.

jobs -l

Die Ausgabe umfasst die Task-ID, die Prozess-ID, den Task-Status und den Befehl, der die Task gestartet hat:

[1]+ 25177 Ping google.com wird ausgeführt &

Wenn Sie den Hintergrundprozess in den Vordergrund bringen möchten, verwenden Sie den Befehl fg :

fg

Wenn Sie mehrere Aufgaben im Hintergrund haben, fügen Sie nach dem Befehl % + Aufgaben-ID hinzu:

fg %1

Um einen Hintergrundprozess zu stoppen, fügen Sie die Prozess-ID nach dem kill -Befehl hinzu:

töten -9 25177

Den Vordergrundprozess in den Hintergrund verschieben

So verschieben Sie einen Vordergrundprozess in den Hintergrund:

01. Stoppen Sie den aktuellen Prozess durch Drücken von Strg+Z

02. Verschieben Sie den gestoppten Prozess in den Hintergrund, indem Sie bg eingeben

Lassen Sie den Hintergrundprozess laufen, bis die Shell beendet wird

Wenn Sie die Verbindung verlieren oder die Shell-Sitzung beenden, wird der Hintergrundprozess beendet. Es gibt mehrere Möglichkeiten, um sicherzustellen, dass ein Prozess ausgeführt wird, bis die interaktive Shell beendet wird.

Eine Möglichkeit besteht darin, die Aufgabe mithilfe disown aus der Shell-Aufgabensteuerung zu entfernen:

verleugnen

Wenn Sie viele Hintergrundaufgaben haben, fügen Sie nach dem Befehl % + Aufgaben-ID hinzu:

%1 verleugnen

Überprüfen Sie mit jobs -l ob der Job aus der Jobliste entfernt wurde. Um die laufenden Prozesse aufzulisten, verwenden Sie den Befehl ps aux .

Eine andere Möglichkeit, sicherzustellen, dass der Prozess ausgeführt wird, bis die Shell beendet wird, ist die Verwendung nohup .

Der Befehl nohup , gefolgt von einem anderen Programm als Argument, ignoriert alle SIGHUP Signale (Auflegen). SIGHUP -Signal wird an den Prozess gesendet, um ihn darüber zu benachrichtigen, dass das Terminal geschlossen wurde.

Um mit dem Befehl nohup einen Befehl im Hintergrund auszuführen, geben Sie Folgendes ein:

nohup-Befehl &

Die Befehlsausgabe wird in die Datei nohup.out umgeleitet.

nohup: Eingabe ignorieren und Ausgabe an „nohup.out“ anhängen

Wenn Sie sich abmelden oder das Terminal schließen, wird der Vorgang nicht beendet.

Alternativen

Einige Programme ermöglichen mehrere nicht-interaktive Sitzungen gleichzeitig.

Bildschirm

Screen oder GNU Screen ist ein Terminal-Multiplexer, der es Ihnen ermöglicht, eine Bildschirmsitzung zu öffnen und innerhalb dieser Sitzung eine beliebige Anzahl von Fenstern (virtuelle Terminals) zu öffnen. Auf dem Bildschirm ausgeführte Prozesse werden auch dann weiter ausgeführt, wenn das Fenster nicht sichtbar ist oder die Verbindung verloren geht.

Tmux

Tmux ist ein modernes GNU-Bildschirminteraktionsprogramm. Mit Tmux können Sie eine Sitzung erstellen und dann mehrere Fenster in dieser Sitzung öffnen. Tmux-Sitzungen sind persistent, was bedeutet, dass die auf Tmux laufenden Programme auch dann noch ausgeführt werden, wenn Sie das Terminal schließen.

Zusammenfassen

Um einen Befehl im Hintergrund auszuführen, fügen Sie nach dem Befehl das Symbol & hinzu.

Wenn Sie einen Befehl im Hintergrund ausführen, können Sie einen anderen Befehl ausführen, ohne auf dessen Beendigung warten zu müssen.

Oben finden Sie detaillierte Informationen zum Ausführen von Linux-Befehlen im Hintergrund. Weitere Informationen zum Ausführen von Linux-Befehlen im Hintergrund finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Verwendung des Linux-Befehls gzip
  • Verwendung des Linux-Befehls „userdel“
  • Verwendung des Linux-Datumsbefehls
  • Verwendung des Linux-Stat-Befehls
  • Verwendung des Linux-Befehls ls
  • Verwendung des Linux-Befehls ln
  • Linux-Befehl „cut“ erklärt
  • Verwendung des Linux-Befehls bzip2

<<:  Gemeinsame MySQL-Sicherungsbefehle und Shell-Sicherungsskripte

>>:  Detaillierte Diskussion der Speicherprinzipien: Werden Variablen in JS im Heap oder Stack gespeichert?

Artikel empfehlen

Beispiel für die JavaScript-Funktion „CollectGarbage“

Sehen wir uns zunächst ein Beispiel für die Speic...

Vue implementiert einen beweglichen schwebenden Button

In diesem Artikelbeispiel wird der spezifische Co...

Detaillierte Erklärung, wann Javascript-Skripte ausgeführt werden

JavaScript-Skripte können überall in HTML eingebe...

Vue implementiert das Hinzufügen von Wasserzeichen zu hochgeladenen Bildern

In diesem Artikel wird der spezifische Implementi...

Detaillierte Erklärung des MySQL-Covering-Index

Konzept Wenn der Index alle Daten enthält, die di...

Installation und Verwendung von Apache-Stresstest-Tools

1. Herunterladen Gehen Sie zur offiziellen Apache...

Analyse der Prinzipien und der Nutzung von Docker-Container-Datenvolumes

Was ist ein Containerdatenvolumen? Wenn sich die ...

Detaillierte Schritte zur Installation der XML-Erweiterung in PHP unter Linux

Installieren der XML-Erweiterung in PHP Linux 1. ...

Mehrere Methoden zur Lösung des Problems des MySQL-Fuzzy-Abfrageindexfehlers

Wenn wir das Platzhalterzeichen „like %“ verwende...

Detaillierte Zusammenfassung häufig verwendeter MySQL-Funktionen

Inhaltsverzeichnis Allgemeine MySQL-Funktionen 1....

Implementierung der IP-Adresskonfiguration in Centos7.5

1. Bevor Sie die IP-Adresse konfigurieren, verwen...

Detaillierte Erklärung zur Verwendung der benutzerdefinierten Vue-Baumsteuerung

In diesem Artikel erfahren Sie, wie Sie das benut...

Detaillierte Erklärung zur SQL-Injection - Sicherheit (Teil 2)

Sollte dieser Artikel Fehler enthalten oder du An...

Details zur Verwendung regulärer Ausdrücke in MySQL

Inhaltsverzeichnis 1. Einleitung 2. Bereiten Sie ...