Normalerweise müssen Sie beim Ausführen eines Befehls im Terminal warten, bis der Befehl beendet ist, bevor Sie einen anderen Befehl eingeben können. Dies wird als Ausführen des Befehls im Vordergrund-oder Vordergrundprozess bezeichnet. Wenn ein Prozess im Vordergrund ausgeführt wird, belegt er Ihre Shell und Sie können mit den Eingabegeräten interagieren.

Was ist, wenn der Befehl lange dauert und Sie in der Zwischenzeit andere Befehle ausführen möchten? Sie haben mehrere Möglichkeiten zur Verfügung., Die offensichtlichste und einfachste Option besteht darin, eine neue Shell-Sitzung zu starten und den darin enthaltenen Befehl auszuführen. Eine andere Möglichkeit besteht darin, den Befehl im Hintergrund auszuführen.

Ein Hintergrundprozess ist ein Prozess / Befehl, der von einem Terminal aus gestartet wird und im Hintergrund ohne Interaktion des Benutzers ausgeführt wird.

In diesem Artikel werden wir über die Hintergrundprozesse sprechen Linux ist. Wir zeigen Ihnen, wie Sie einen Befehl im Hintergrund starten und den Prozess nach dem Schließen der Shell-Sitzung am Laufen halten.,

Führen Sie einen Linux-Befehl im Hintergrund aus #

Um einen Befehl im Hintergrund auszuführen, fügen Sie am Ende des Befehls das kaufmännische Zeichen (&) hinzu:

command &

Die Shell-Job-ID (umgeben von Klammern) und die Prozess-ID werden auf dem Terminal gedruckt:

 25177

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

Der Hintergrundprozess schreibt weiterhin Nachrichten an das Terminal, von dem aus Sie den Befehl aufgerufen haben., To suppress the stdout and stderr messages use the following syntax:

command > /dev/null 2>&1 & 

>/dev/null 2>&1 means redirect stdout to /dev/null and stderr to stdout .,/div>

Um einen Hintergrundprozess in den Vordergrund zu bringen, verwenden Sie den Befehl fg:

fg

Wenn Sie mehrere Hintergrundjobs haben, fügen Sie % und die Job-ID nach dem Befehl ein:

Um den Hintergrundprozess zu beenden, verwenden Sie den Befehl kill Befehl gefolgt von der Prozess-ID:

kill -9 25177

Einen Vordergrundprozess in den Hintergrund verschieben #

Um einen laufenden Vordergrundprozess im Hintergrund zu verschieben:

  1. Stoppen Sie den Prozess, indem Sie Ctrl+Zeingeben.,
  2. Verschieben Sie den gestoppten Prozess in den Hintergrund, indem Sie bgeingeben.

Lassen Sie Hintergrundprozesse laufen, nachdem eine Shell beendet wurde #

Wenn Ihre Verbindung unterbrochen wird oder Sie sich von der Shell-Sitzung abmelden, werden die Hintergrundprozesse beendet. Es gibt verschiedene Möglichkeiten, den Prozess nach dem Ende der interaktiven Shell-Sitzung am Laufen zu halten.,

Eine Möglichkeit besteht darin, den Job mithilfe der integrierten disown Shell-Steuerung zu entfernen:

disown

Wenn Sie mehr als einen Hintergrundjob haben, fügen Sie % und die Job-ID nach dem Befehl ein:

disown %1
p>Bestätigen Sie, dass der Auftrag mit dem Befehl jobs -l aus der Tabelle der aktiven Aufträge entfernt wird. Verwenden Sie den Befehl ps aux, um alle ausgeführten Prozesse aufzulisten, einschließlich des verweigerten.,

Eine andere Möglichkeit, einen Prozess nach dem Beenden der Shell am Laufen zu halten, ist die Verwendung von .

Der Befehl nohup führt ein anderes als Argument spezifiziertes Programm aus und ignoriert alle SIGHUP (hangup) Signale. SIGHUP ist ein Signal, das an einen Prozess gesendet wird, wenn sein Steuerterminal geschlossen ist.

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

nohup command &

Die Befehlsausgabe wird in die Datei nohup.out umgeleitet.,

nohup: ignoring input and appending output to 'nohup.out'

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

Alternativen #

Es gibt eine Reihe von Programmen, mit denen Sie mehrere interaktive Sitzungen gleichzeitig durchführen können.

Screen #

Screen oder GNU Screen ist ein Terminalmultiplexer-Programm, mit dem Sie eine Bildschirmsitzung starten und eine beliebige Anzahl von Fenstern (virtuelle Terminals) in dieser Sitzung öffnen können. Prozesse, die auf dem Bildschirm ausgeführt werden, werden weiterhin ausgeführt, wenn ihr Fenster nicht sichtbar ist, auch wenn Sie die Verbindung trennen.,

Tmux #

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

Schlussfolgerung #

Um einen Befehl im Hintergrund auszuführen, fügen Sie & am Ende des Befehls ein.

Wenn Sie einen Befehl im Hintergrund ausführen, müssen Sie nicht warten, bis er beendet ist, bevor Sie einen anderen ausführen können.

Articles

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.