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

Implementierung der Miniprogramm-Aufzeichnungsfunktion

Vorwort Bei der Entwicklung eines Miniprogramms b...

Teilen Sie das Problem, dass Ubuntu 19 die Docker-Quelle nicht installieren kann

Entsprechend den wichtigsten Websites und persönl...

Next.js – Erste Schritte-Tutorial

Inhaltsverzeichnis Einführung Erstellen eines Nex...

Zusammenfassung zum Erlernen von HTML-Tags und Grundelementen

1. Elemente und Tags in HTML <br />Ein Elem...

MySQL 8.0.18 fügt Benutzer zur Datenbank hinzu und erteilt Berechtigungen

1. Es wird empfohlen, den Root-Benutzer für die A...

Der einfachste Weg zum Debuggen gespeicherter Prozeduren in MySQL

Ein Kollege hat mir einmal gesagt, ich solle eine...

Python schreibt die Ausgabe in den CSV-Vorgang

Wie unten dargestellt: def test_write(selbst): Fe...

Mysql-Sortierung und Paginierung (Order by & Limit) und vorhandene Fallstricke

Sortierabfrage (Sortieren nach) Im E-Commerce: Wi...

So konfigurieren Sie mehrere Tomcats mit Nginx-Lastausgleich unter Linux

Die Methoden zur Installation von Nginx und mehre...

SQL-basierte Abfrageanweisungen

Inhaltsverzeichnis 1. Einfache SELECT-Anweisung 1...

Detaillierte Erläuterung der Angular-Routing-Unterrouten

Inhaltsverzeichnis 1. Subroutensyntax 2. Beispiel...

So erstellen Sie eine Liste in CocosCreator

CocosCreator-Version: 2.3.4 Cocos hat keine Liste...