Führen Sie einen Hintergrundprozess in Bash aus

MD Aminul Islam 20 Juni 2023
  1. Erstellen Sie einen Hintergrundprozess mit & in Bash
  2. Beenden Sie einen Hintergrundprozess in Bash
  3. Halten Sie den aktuellen Job mit disown in Bash am Laufen
  4. Verhindern Sie, dass der Hintergrundprozess weiterhin Nachrichten in das Terminal druckt
  5. Mit nohup einen Befehl im Hintergrund laufen lassen
  6. Konvertieren Sie einen laufenden Vordergrundprozess in einen Hintergrundprozess in Bash
Führen Sie einen Hintergrundprozess in Bash aus

Wenn Sie einen Befehl im Terminal ausführen, müssen Sie warten, bis der Befehl seine Ausführung beendet hat. Dies wird als Vordergrundprozess bezeichnet.

Einige fortgeschrittene Programme müssen jedoch im Hintergrund ausgeführt werden. In einem Bash-Skript gibt es eine einfache Möglichkeit, Ihren Befehl im Hintergrund auszuführen.

Das Interessante an einem Hintergrundprozess ist, dass Sie nicht auf das Ende der Ausführung eines Befehls warten müssen. Sie können einen anderen Befehl parallel ausführen.

Sie können einen Hintergrundprozess jedoch nicht beenden, indem Sie nur auf die Kreuzschaltfläche klicken. Sie müssen einige Befehle verwenden, um einen Hintergrundprozess zu beenden.

In diesem Artikel werden wir besprechen, wie wir einen Befehl erstellen können, der im Hintergrund ausgeführt wird. Außerdem werden wir das Thema erörtern, indem wir die notwendigen Beispiele und Erklärungen verwenden, um das Thema zu vereinfachen.

Wir werden zuerst lernen, wie man einen Hintergrundprozess erstellt und dann sehen, wie man einen bestehenden Prozess beendet.

Erstellen Sie einen Hintergrundprozess mit & in Bash

Das Erstellen eines Hintergrundprozesses ist im Bash-Skript sehr einfach. Alles, was Sie tun müssen, ist das kaufmännische Und-Symbol & am Ende des Befehls einzufügen.

Die allgemeine Syntax zum Ausführen eines Befehls im Hintergrund lautet:

YOUR COMMAND &

Das folgende Beispiel führt ein Bash-Skript als Hintergrundprozess aus. Der Code sieht wie folgt aus:

./example.sh &

Nachdem Sie den obigen Code ausgeführt haben, erhalten Sie diese Ausgabe:

[1] 20

Hier sehen Sie die Vorgangsnummer, umgeben von der dritten Klammer.

Wenn Ihr Prozess seine Arbeit erledigt hat, werden Sie wie folgt benachrichtigt:

[1]+  Done                    ./example.sh

Beenden Sie einen Hintergrundprozess in Bash

Um einen Hintergrundprozess zu beenden, müssen Sie nur die folgenden Schritte ausführen. Wenn Sie die Prozess-ID vergessen haben, können Sie Ihren laufenden Prozess mit dem folgenden Befehl finden.

jobs -l

Dadurch wird die Liste der laufenden Prozesse ausgegeben.

[1]+ 25177 Running                 ./example.sh &

In der Liste können Sie die Prozess-ID finden und diese verwenden, um den Prozess mit dem folgenden Befehl zu beenden.

kill %1

Die allgemeine Syntax zum Beenden eines Prozesses lautet:

kill %ProcessID

Halten Sie den aktuellen Job mit disown in Bash am Laufen

Sie können den aktuellen Job auch bei geschlossenem Terminal im Hintergrund weiterlaufen lassen. Zu diesem Zweck verwenden wir einen Befehl namens disown.

Um einen aktuellen Job ständig im Hintergrund laufen zu lassen, können Sie dem folgenden Beispielbefehl folgen:

disown -h %3

Wir halten den Prozess mit der ID 3 am Leben, auch wenn das Terminal geschlossen ist. Hier ist -h eine Option, um den Prozess am Leben zu erhalten.

Die allgemeine Syntax für diesen Befehl lautet:

disown -h %ProcessID

Verhindern Sie, dass der Hintergrundprozess weiterhin Nachrichten in das Terminal druckt

Um zu verhindern, dass ein Hintergrundprozess Nachrichten in das Terminalfenster druckt, können Sie der folgenden Syntax folgen:

Your_Command 2>/dev/null &

Dadurch wird das Drucken von Nachrichten im Terminalfenster beendet.

Mit nohup einen Befehl im Hintergrund laufen lassen

Wenn Sie einen Prozess im Hintergrund laufen lassen möchten, auch wenn das Terminal geschlossen ist, müssen Sie den Befehl nohup verwenden. Dieser Befehl führt andere als Argument angegebene Programme aus und ignoriert alle SIGHUP-Signale.

Wenn Sie das Terminal schließen, sendet es ein SIGHUP-Signal, um alle laufenden Prozesse unter dem steuernden Terminal zu schließen. Da dieser Befehl den SIGHUP-Befehl ignoriert, ist der vom nohup-Befehl ausgeführte Prozess immer am Leben, bis er beendet wird.

Bei diesem Befehl müssen Sie das & angeben. Sie können dem folgenden Beispiel folgen:

nohup ./MyScript.sh &

Dieser Befehl führt den Hintergrundprozess aus und schreibt seine Ausgabe in eine nohup.out-Datei.

Konvertieren Sie einen laufenden Vordergrundprozess in einen Hintergrundprozess in Bash

Um einen Vordergrundprozess in den Hintergrund zu übertragen, müssen Sie die folgenden zwei Schritte ausführen:

  1. Zuerst müssen Sie den Zielprozess stoppen, indem Sie Strg+Z drücken.
  2. Bringen Sie den gestoppten Prozess mit dem Befehl bg in den Hintergrund. Sie können der folgenden Syntax folgen:
bg %ProcessID

Alle in diesem Artikel verwendeten Codes sind in Bash geschrieben. Es funktioniert nur in der Linux Shell-Umgebung.

MD Aminul Islam avatar MD Aminul Islam avatar

Aminul Is an Expert Technical Writer and Full-Stack Developer. He has hands-on working experience on numerous Developer Platforms and SAAS startups. He is highly skilled in numerous Programming languages and Frameworks. He can write professional technical articles like Reviews, Programming, Documentation, SOP, User manual, Whitepaper, etc.

LinkedIn

Verwandter Artikel - Bash Background