Detaillierte Erklärung der Verwendung und des Unterschieds zwischen nohup und & in Linux

Detaillierte Erklärung der Verwendung und des Unterschieds zwischen nohup und & in Linux

Beispiel:

Wir verwenden den Python-Code loop_hello.py als Beispiel. Der Code gibt die Anzahl der Schleifen und „Hallo Welt!“ in einer Schleife aus und schläft nach jeder Ausgabe 1 Sekunde lang.

Der Beispielcode lautet wie folgt:

Importzeit
 
def main():
 ich = 0 
 während True:
  ich += 1
  drucken('%d: hallo Welt!' %(i))
  Zeit.Schlaf(1)
 
wenn '__main__' == __name__:
 hauptsächlich()

Führen Sie loop_hello.py aus und die Ausgabe ist wie folgt:

Das Programm gibt jede Sekunde eine Zeichenfolge an das Terminal aus. Wenn Sie zu diesem Zeitpunkt Strg+C drücken, empfängt das Programm ein SIGINT-Signal. Wenn keine spezielle Verarbeitung erfolgt, besteht das Standardverhalten des Programms darin, sich zu beenden (wie oben gezeigt).

und

Die Verwendung von python loop_hello.py & bewirkt Folgendes:

Zunächst wird die Prozessnummer im Terminal als 2367 angezeigt

Geben Sie Strg + C ein, um ein SIGINT-Signal zu senden. Das Programm wird dann weiter ausgeführt.

Wenn die Sitzung geschlossen wird, erhält das Programm ein SIGHUP-Signal. Sie können durch ps aux | grep loop_hello.py sehen, dass auch Prozess 2367 geschlossen wird.

nein

Verwenden Sie nohup python loop_hello.py. Der Effekt ist wie folgt:

  1. Es erscheint keine Prozessnummer im Vordergrund
  2. Es erscheint die Eingabeaufforderung „Eingabe ignorieren und Ausgabe an „nohup.out“ anhängen“
  3. Die Ausgabe von „Hello“ erscheint nicht im Vordergrund

Wenn ich die Sitzung schließe, wird das Programm dann geschlossen?

  1. Verwenden Sie ps aux | grep loop_hello, um die Prozess-ID anzuzeigen
  2. Wenn Sie die Sitzung schließen, erhält das Programm ein SIGHUP-Signal.
  3. Verwenden Sie ps aux | grep loop_hello erneut und stellen Sie fest, dass der Prozess noch vorhanden ist
  4. Beenden Sie den Prozess

Test Strg + C

Verwenden Sie nohup, um loop_hello.py zu starten. Wenn Sie Strg+C drücken, wird das Programm direkt nach dem Empfang des SIGINT-Signals geschlossen.

& und nohup werden zusammen verwendet

Verwenden Sie nohup python loop_hello.py &, um das Programm auszuführen. Der Effekt ist wie folgt:

Geben Sie Strg + C ein, um ein SIGINT-Signal zu senden. Verwenden Sie ps aux, um zu überprüfen, ob der Prozess noch vorhanden ist.

Schließen Sie die Sitzung, senden Sie ein SIGHUP-Signal und überprüfen Sie mit ps aux, ob der Prozess noch existiert.

Wenn Sie den Prozess beenden möchten, können Sie nur kill verwenden.

Zusammenfassen:

Verwenden Sie &, um das Programm im Hintergrund auszuführen:

  1. Die Ergebnisse werden auf dem Terminal ausgegeben
  2. Verwenden Sie Strg+C, um ein SIGINT-Signal zu senden und die Immunität des Programms zu aktivieren.
  3. Schließen Sie die Sitzung und senden Sie ein SIGHUP-Signal. Das Programm wird geschlossen.

Führen Sie das Programm mit nohup aus:

  1. Die Ergebnisse werden standardmäßig an nohup.out ausgegeben.
  2. Verwenden Sie Strg+C, um ein SIGINT-Signal zu senden und das Programm wird geschlossen
  3. Schließen Sie die Sitzung und senden Sie ein SIGHUP-Signal. Das Programm ist immun

An Wochentagen werden nohup und & oft zusammen verwendet, um Programme online zu starten:

  1. Immun gegen SIGINT- und SIGHUP-Signale

Das ist alles für diesen Artikel. Ich hoffe, dass der Inhalt dieses Artikels für Ihr Studium oder Ihre Arbeit von gewissem Referenzwert ist. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM.

Das könnte Sie auch interessieren:
  • PHP-Daemon-Prozess plus Linux-Befehl nohup zur Implementierung der Aufgabenausführung einmal pro Sekunde
  • Verwendung von nohup und tail-f unter Linux
  • Lösen Sie das Problem der im Hintergrund laufenden Python-Nohup-Linux-Ausgabe
  • Detaillierte Erklärung der Lösung für das Problem, dass die Nohup-Protokollausgabe unter Linux zu groß ist
  • Linux nohup, um Programme im Hintergrund auszuführen und anzuzeigen (nohup und &)
  • So verwenden Sie & und nohup im Hintergrund von Linux
  • Eine kurze Analyse der Beispiele und Unterschiede bei der Verwendung von nohup und screen zum Ausführen von Hintergrundaufgaben in Linux
  • Linux &, Verwendung von nohup und Systemctl

<<:  Detaillierte Erläuterung der objektorientierten Praxis von JavaScript: Kapselung und Ziehen von Objekten

>>:  Tutorial zur Installation von mysql5.7.23 auf Ubuntu 18.04

Artikel empfehlen

Wissenspunkte zum Prinzip der MySQL-Join-Abfrage

Mysql Join-Abfrage 1. Grundlegende Konzepte Verbi...

CSS erzielt den „Bottom Absorption“-Effekt im Footer

Wir stoßen häufig auf dieses Problem: Wie kann ma...

Rückblick auf die besten Webdesign-Arbeiten 2012 [Teil 1]

Zum Beginn des neuen Jahres möchte ich meinen Fre...

Vue3 erhält die aktuelle Routingadresse

Richtige Antwort Verwenden von useRouter : // Rou...

So implementieren Sie ein Dropdown-Menü für die HTML-Eingabe

Code kopieren Der Code lautet wie folgt: <html...

Implementierung der MySQL-Datendesensibilisierung (Telefonnummer, ID-Karte)

1. Erklärung zur Datendesensibilisierung Bei den ...

Lösen Sie das Problem verstümmelter chinesischer Schriftzeichen in Mysql5.7

Wenn Sie MySQL 5.7 verwenden, werden Sie feststel...

JS implementiert die Benutzerregistrierungsschnittstellenfunktion

In diesem Artikelbeispiel wird der spezifische JS...

So ändern Sie den Replikationsfilter in MySQL dynamisch

MySQL Replikationsfilter dynamisch ändern Lassen ...

Vue implementiert scrollbaren Popup-Fenstereffekt

In diesem Artikel wird der spezifische Code von V...

Installations-Tutorial zur komprimierten Version von MySQL 8.0.11 unter Win10

In diesem Artikel finden Sie das Installations-Tu...

HTML-Tabellen-Tag-Tutorial (25): vertikales Ausrichtungsattribut VALIGN

In vertikaler Richtung können Sie die Zeilenausri...

Verwendung der VUE-Renderfunktion und ausführliche Erklärung

Inhaltsverzeichnis Vorwort Die Rolle des Renders ...

Beispiele für die korrekte Verwendung von Karten in WeChat-Miniprogrammen

Inhaltsverzeichnis Vorwort 1. Vorbereitung 2. Tat...