So verwenden Sie & und nohup im Hintergrund von Linux

So verwenden Sie & und nohup im Hintergrund von Linux

Wenn wir in einem Terminal oder einer Konsole arbeiten, möchten wir den Bildschirm möglicherweise nicht mit der Ausführung eines Jobs belegen, da es möglicherweise wichtigere Dinge zu tun gibt, wie beispielsweise das Lesen von E-Mails. Prozesse mit intensivem Festplattenzugriff sollten vorzugsweise außerhalb der Stoßzeiten (z. B. am frühen Morgen) ausgeführt werden. Um die Ausführung dieser Prozesse im Hintergrund, also nicht auf dem Terminalbildschirm, zu ermöglichen, stehen mehrere Optionen zur Verfügung.

und

Wenn ein Job im Vordergrund ausgeführt wird, wird das Terminal durch den Job belegt. Sie können nach dem Befehl ein & hinzufügen, um ihn im Hintergrund auszuführen. Beispiel: sh test.sh &
Zu den Befehlen, die für die Ausführung im Hintergrund geeignet sind, gehören „Find“, „zeitaufwändiges Sortieren“ und einige Shell-Skripte. Seien Sie vorsichtig, wenn Sie Jobs im Hintergrund ausführen: Führen Sie keine Befehle im Hintergrund aus, die eine Benutzerinteraktion erfordern, denn dann bleibt Ihr Computer einfach stehen und wartet. Im Hintergrund laufende Jobs geben jedoch weiterhin Ergebnisse auf dem Bildschirm aus und stören so Ihre Arbeit. Wenn der Job, den Sie im Hintergrund ausführen möchten, eine große Ausgabe erzeugt, leiten Sie seine Ausgabe am besten mit der folgenden Methode in eine Datei um:

Befehl > out.file 2>&1 &

Auf diese Weise werden die gesamte Standardausgabe und Fehlerausgabe in eine Datei namens out.file umgeleitet.

PS: Nach erfolgreichem Absenden des Prozesses wird eine Prozess-ID angezeigt, mit deren Hilfe der Prozess überwacht oder beendet werden kann. (ps -ef | grep Prozessnummer oder kill -9 Prozessnummer)

nein

Nach Verwendung des &-Befehls wird der Job zur Ausführung in den Hintergrund gestellt. Die aktuelle Konsole ist nicht belegt, aber sobald die aktuelle Konsole geschlossen wird (beim Abmelden vom Konto), wird die Ausführung des Jobs beendet. Der Befehl „nohup“ kann den entsprechenden Prozess weiter ausführen, nachdem Sie sich von Ihrem Konto abgemeldet haben. nohup bedeutet „nicht auflegen“. Die allgemeine Form des Befehls lautet:

nohup-Befehl &

Wenn Sie einen Job mit dem Befehl „nohup“ übermitteln, wird standardmäßig die gesamte Ausgabe des Jobs in eine Datei mit dem Namen „nohup.out“ umgeleitet, sofern keine andere Ausgabedatei angegeben ist:

nohup-Befehl > myout.file 2>&1 &

Viele Leute ignorieren es einfach, nachdem sie nohup verwendet haben. Tatsächlich ist es möglich, dass der Befehl automatisch beendet wird, wenn das aktuelle Konto verlassen oder abnormal beendet wird. Nachdem Sie den Befehl mit dem Befehl „nohup“ im Hintergrund ausgeführt haben, müssen Sie das aktuelle Konto daher mit „exit“ normal beenden, um sicherzustellen, dass der Befehl weiterhin im Hintergrund ausgeführt wird.

Strg + Z
Ein im Vordergrund ausgeführter Befehl kann in den Hintergrund gestellt und in einen angehaltenen Zustand versetzt werden.

Strg+c
Beendet den Vordergrundbefehl.

Jobs
Überprüfen Sie, wie viele Befehle derzeit im Hintergrund ausgeführt werden.

Die Option jobs -l zeigt die PID aller Aufgaben an. Der Status der Jobs kann „Läuft“, „Angehalten“ oder „Beendet“ sein. Wenn die Aufgabe jedoch beendet (abgebrochen) wird, entfernt die Shell die Prozess-ID der Aufgabe aus der Liste, die der aktuellen Shell-Umgebung bekannt ist.

2>&1Analyse

Befehl >out.file 2>&1 &
  1. command>out.file leitet die Ausgabe des Befehls in die Datei out.file um, d. h. der Ausgabeinhalt wird nicht auf dem Bildschirm gedruckt, sondern in die Datei out.file ausgegeben.
  2. 2>&1 leitet den Standardfehler an die Standardausgabe um. Die Standardausgabe wurde hier an die Datei out.file umgeleitet, d. h. der Standardfehler wird auch an die Datei out.file ausgegeben. Das letzte & bewirkt, dass der Befehl im Hintergrund ausgeführt wird.
  3. Überlegen Sie, was 2>1 bedeutet. 2 in Kombination mit > bedeutet Fehlerumleitung, und 1 bedeutet, dass der Fehler in eine Datei 1 umgeleitet wird, nicht in die Standardausgabe. Wenn es in 2>&1 geändert wird, bedeutet & in Kombination mit 1 die Standardausgabe, und der Fehler wird in die Standardausgabe umgeleitet.

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Linux nohup, um Programme im Hintergrund auszuführen und anzuzeigen (nohup und &)
  • Lösen Sie das Problem der im Hintergrund laufenden Python-Nohup-Linux-Ausgabe
  • PHP-Daemon-Prozess plus Linux-Befehl nohup zur Implementierung der Aufgabenausführung einmal pro Sekunde
  • Detaillierte Erklärung der Lösung für das Problem, dass die Nohup-Protokollausgabe unter Linux zu groß ist
  • Verwendung von nohup und tail-f unter Linux
  • Nohup und Anzeigen und Beenden von im Hintergrund laufenden Prozessen unter Linux

<<:  Ein-Klick-Installation von MySQL 5.7 und Methode zur Änderung der Kennwortrichtlinie

>>:  Vergleich der Leistung von int, char und varchar in MySQL

Artikel empfehlen

Grundlegende Operationen der MySQL-Lernnotizentabelle

Tabelle erstellen Tabelle erstellen Tabellenname ...

Anweisungen zur Verwendung der Option --rm von Docker Run

Wenn der Docker-Container beendet wird, bleibt da...

So installieren Sie Nginx in CentOS7 und konfigurieren den automatischen Start

1. Laden Sie das Installationspaket von der offiz...

Referenz zur MySQL-Optimierungslösung

Probleme, die bei der Optimierung auftreten könne...

Vue.js Leistungsoptimierung N Tipps (es lohnt sich, sie zu sammeln)

Inhaltsverzeichnis Funktionskomponenten Aufteilun...

Detaillierter Prozess der SpringBoot-Integration von Docker

Inhaltsverzeichnis 1. Demo-Projekt 1.1 Schnittste...

Detaillierte Analyse jeder Phase der HTTP-Anforderungsverarbeitung von Nginx

Beim Schreiben des HTTP-Moduls von nginx müssen d...

Erläuterung zum Lastenausgleich und Reverseproxy von Nginx

Inhaltsverzeichnis Lastenausgleich Klassifizierun...

Fallbeispiel zur TypeScript-Schnittstellendefinition

Die Rolle der Schnittstelle: Schnittstelle, auf E...

Der Unterschied zwischen HTML-Iframe und Frameset_PowerNode Java Academy

Einführung 1. <iframe>-Tag: Ein Iframe ist ...

Detaillierte Erklärung zum effizienten MySQL-Paging

Vorwort Normalerweise wird für MySQL-Abfragen mit...

Asynchrone JS ES6-Lösung

Inhaltsverzeichnis Erste Verwendung der Callback-...