So starten Sie den Linux -Befehl im Hintergrund und lösen Sie den Prozess im Terminal ab

So starten Sie den Linux -Befehl im Hintergrund und lösen Sie den Prozess im Terminal ab
In diesem Leitfaden lernen wir, wie Sie einen Befehl im Hintergrund ausführen und wie Sie die Prozesse vom Terminal abnehmen können.

Voraussetzungen:

Um die Schritte in diesem Handbuch auszuführen, benötigen Sie die folgenden Komponenten:

  • Ein funktionales Linux -System. Erfahren Sie mehr über die Einrichtung eines Ubuntu -VM auf VirtualBox.
  • Zugriff auf einen Nicht-Root-Benutzer mit Sudo-Berechtigung.

Ausführen der Prozesse aus dem Terminal ausführen

Wenn ein Befehl ausgeführt wird, werden die Prozesse unter dem Terminal hervorgebracht. Wenn das Terminal geschlossen ist, werden alle zugehörigen Prozesse automatisch beendet. In bestimmten Situationen kann es unpraktisch sein. Zum Beispiel:

  • Überwältigende Menge an Ausgabedaten und Fehler-/Diagnosemeldungen
  • Zufällige Schließung des Terminals, was zur Beendigung potenziell missionskritischer Prozesse usw. führt, usw.

Um diese Probleme anzugehen, gibt es einige Optionen:

  • Ausführen der Prozesse im Hintergrund
  • Die Prozesse vom Terminal abnehmen

Die Prozesse, die im Hintergrund ausgeführt werden. Darüber hinaus kann das Terminal die zusätzlichen Befehle ausführen. Bei abgetrennten Prozessen werden sie nicht beendet, selbst wenn das Terminal geschlossen ist.

Starten Sie die Prozesse im Hintergrund

In vielen Fällen kann ein Befehl eine ganze Weile dauern, bis es fertig ist. Im Allgemeinen ist der Benutzer gezwungen zu warten, bis der Befehl beendet ist. Wenn Sie beispielsweise einen Texteditor verwenden, ist die Shell nicht verfügbar, bis der Editor geschlossen ist.

Um zu demonstrieren, verwenden wir den Befehl „Ja“:

$ MAN JA

Methode 1:

Es gibt einige Möglichkeiten, wie wir den Laufprozess an den Hintergrund senden können.

Zuerst stoppen wir den Prozess, ohne ihn zu beenden. Führen Sie dazu den folgenden Befehl aus und drücken Sie "Strg + z":

$ ja "Hallo Welt"> /dev /null

Führen Sie nun den Befehl „BG“ aus, um den Prozess im Hintergrund zu senden:

$ bg

Einmal in den Hintergrund gedrückt, wird der Prozess wieder aufgenommen. Der folgende Befehl listet alle laufenden Jobs im Hintergrund auf:

$ Jobs

Methode 2:

In der vorherigen Methode lief der Prozess zunächst im Vordergrund. Wir machten den Prozess inne, schickten ihn in den Hintergrund und nahmen ihn dann wieder auf. Stattdessen können wir den Prozess direkt im Hintergrund ausführen.

Fügen Sie dazu das "&" Zeichen am Ende des Befehls hinzu:

$ ja "oh long Johnson"> /dev /null &

Hier werden die hervorgebrachten Prozesse automatisch im Hintergrund ausgeführt. Überprüfen Sie, ob Sie die Liste der Hintergrundjobs überprüfen:

$ Jobs

Methode 3:

Wir können die Prozesse auch mit Hilfe von TMUX im Hintergrund starten, einem leistungsstarken Multiplexer, der mehrere Terminalsitzungen in einem einzigen Fenster verwalten kann. Es wird nicht vorinstalliert in Linux. Es ist jedoch für alle wichtigen Linux -Distributionen verfügbar. Erfahren Sie mehr über die TMUX -Installation unter Linux.

Im folgenden Beispiel verwenden wir TMUX, um ein Ziel zu pingen und die Ausgabe zu protokollieren:

$ tmux new -d 'ping -c 9 127.0.0.1> Ping.Protokoll'

Die Protokolldatei verwertet, ob der Befehl erfolgreich ausgeführt wird oder nicht:

$ cat ping.Protokoll

Es ist nur ein Beispiel dafür, was Tmux tun kann. Erfahren Sie mehr über TMUX mit Beispielen.

Rückgabe der Jobs in den Vordergrund

Wenn Sie einen Job in den Vordergrund zurückgeben möchten, verwenden wir den Befehl „FG“. Wir brauchen auch die Jobnummer aus dem Jobbefehl.

Bestimmen Sie zunächst den Job, den Sie in den Vordergrund stellen möchten:

$ Jobs

Verwenden Sie nun den Befehl „FG“:

$ fg %

Die Prozesse vom Terminal abnehmen

Jeder mit einem Terminal verbundene Prozess wird beendet, sobald das Terminal schließt, unabhängig davon, ob es im Vordergrund oder im Hintergrund läuft. Um die Prozessabschluss zu vermeiden, dissoziieren wir den Zielprozess vom Terminal/Shell.

Methode 1:

Um einen Prozess abzulehnen, benötigen wir zunächst einen Hintergrundprozess:

$ ja "QWERTY"> /dev /null &

Überprüfen Sie die Liste der laufenden Hintergrundjobs:

$ Jobs

Beachten Sie die Seriennummer des Zielhintergrunds. Verwenden Sie nun den Befehl "discond", um ihn vom Terminal zu lösen:

$ discond %

Der Zieljob sollte jetzt aus der Jobliste verschwinden:

$ Jobs

Sie können jedoch immer noch den Prozess im Hintergrund sehen:

$ PS Aux

Methode 2:

Eine andere Möglichkeit, einen Prozess vom übergeordneten Terminal zu lösen. Es hält einen Prozess im Hintergrund, auch nachdem das Terminal geschlossen wurde.

Die Verwendung von „Nohup“ ist wie folgt:

$ nohup &

Überprüfen Sie, ob der Job erfolgreich erstellt wird:

$ Jobs

Methode 3:

Diese Methode löst den Zielprozess vollständig ab. Es ist eine effektivere Möglichkeit, die GUI -Apps zu lösen.

Verwenden Sie beispielsweise den folgenden Befehl, um den Firefox zu starten und vollständig vom Terminal abzutreten:

$ Firefox /dev/null &

Hier:

  • Der /dev/null ist ein spezielles Gerät in Linux, das alle darauf geschriebenen Daten beseitigt.
  • Im vorherigen Befehl wird die Eingabe gelesen und die Ausgabe wird an gesendet /dev/null. Erfahren Sie mehr über die anderen Möglichkeiten, die /dev /null zu verwenden.

Abschluss

Wir haben die verschiedenen Arten gezeigt, einen Prozess im Hintergrund auszuführen. Wir haben auch die Möglichkeiten vorgestellt, einen Prozess vom übergeordneten Terminal abzubauen. Diese Techniken können bei der Arbeit mit dem Terminal oder beim Ausführen eines Skripts nützlich sein.

Wenn Sie bestimmte Befehle in einem bestimmten Muster ausführen müssen, können wir es als Systemd -Dienst abladen. Für Fernmaschinen können wir auch die Tools von Drittanbietern wie Ansible verwenden, um fast alles zu automatisieren.

Happy Computing!