Android

So führen Sie Linux-Befehle im Hintergrund aus

Linux Befehle für Beginner

Linux Befehle für Beginner

Inhaltsverzeichnis:

Anonim

Wenn Sie einen Befehl im Terminal ausführen, müssen Sie in der Regel warten, bis der Befehl beendet ist, bevor Sie einen anderen eingeben können. Dies wird als Ausführen des Befehls im Vordergrund oder Vordergrundprozess bezeichnet. Wenn ein Prozess im Vordergrund ausgeführt wird, nimmt er Ihre Shell ein und Sie können mit den Eingabegeräten damit 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 naheliegendste und einfachste Möglichkeit besteht darin, eine neue Shell-Sitzung zu starten und den Befehl darin 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 und im Hintergrund ausgeführt wird, ohne dass der Benutzer eingreifen muss.

Wir werden über die Hintergrundprozesse unter Linux sprechen. Wir zeigen Ihnen, wie Sie einen Befehl im Hintergrund starten und den Prozess nach dem Schließen der Shell-Sitzung weiter ausführen.

Führen Sie im Hintergrund einen Linux-Befehl aus

Fügen Sie zum Ausführen eines Befehls im Hintergrund das kaufmännische Und-Zeichen ( & ) am Ende des Befehls hinzu:

command &

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

25177

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

Der Hintergrundprozess schreibt weiterhin Nachrichten an das Terminal, von dem aus Sie den Befehl aufgerufen haben. Verwenden Sie die folgende Syntax, um die Nachrichten stdout und stderr zu unterdrücken:

command > /dev/null 2>&1 &

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

Verwenden Sie das Dienstprogramm jobs , um den Status aller angehaltenen Jobs und Hintergrundjobs in der aktuellen Shell-Sitzung anzuzeigen:

jobs -l

Die Ausgabe enthält die Auftragsnummer, die Prozess-ID, den Auftragsstatus und den Befehl, mit dem der Auftrag gestartet wurde:

+ 25177 Running ping google.com &

Verwenden Sie den Befehl fg um einen Hintergrundprozess in den Vordergrund zu bringen:

fg

fg %1

Verwenden Sie den Befehl kill gefolgt von der Prozess-ID, um den Hintergrundprozess zu beenden:

kill -9 25177

Einen Vordergrundprozess in den Hintergrund verschieben

So verschieben Sie einen laufenden Vordergrundprozess in den Hintergrund:

  1. Beenden Sie den Prozess, indem Sie Ctrl+Z eingeben. Verschieben Sie den angehaltenen Prozess in den Hintergrund, indem Sie bg eingeben.

Lassen Sie die Hintergrundprozesse nach dem Beenden einer Shell weiterlaufen

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

Eine Möglichkeit besteht darin, den Auftrag mit der integrierten Disown-Shell aus der Auftragssteuerung der Shell zu entfernen:

disown

disown %1

Stellen Sie mit dem Befehl jobs -l sicher, dass der Job aus der Tabelle der aktiven Jobs entfernt wurde. Verwenden Sie den Befehl ps aux um alle laufenden Prozesse, einschließlich der nicht genehmigten, ps aux .

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

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

nohup , um einen Befehl mit dem Befehl nohup im Hintergrund auszuführen:

nohup command &

Die Befehlsausgabe wird in die Datei nohup.out umgeleitet.

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

Alternativen

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

Bildschirm

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

Tmux

Tmux ist eine moderne Alternative zum GNU-Bildschirm. 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 weiter ausgeführt werden, wenn Sie das Terminal schließen.

Fazit

Um einen Befehl im Hintergrund auszuführen, schließen 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 weiteren ausführen können.

nohup fg bg jobs disown terminal