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

So implementieren Sie das Abfangen von URIs im Nginx-Standort

veranschaulichen: Stamm und Alias ​​im Standort D...

Vue implementiert Drag-Fortschrittsbalken

In diesem Artikelbeispiel wird der spezifische Co...

JavaScript implementiert Informationen zur Kennwortfeldüberprüfung

In diesem Artikelbeispiel wird der spezifische Ja...

Detaillierte Erläuterung der FTP-Umgebungskonfigurationslösung (vsftpd)

1. Installieren Sie die vsftpd-Komponente Install...

Lassen Sie sich die tiefe Kopie von js verstehen

Inhaltsverzeichnis js tiefe Kopie Methode der Dat...

Eine kurze Einführung in die Kernkenntnisse der VUE uni-app

Inhaltsverzeichnis Spezifikation a. Die Auslageru...

Erstellen einer einfachen Game-Engine mit React Native

Inhaltsverzeichnis Einführung Erste Schritte Eine...

960 Grid System – Grundprinzipien und Verwendung

Natürlich gibt es auch viele Leute, die die gegent...