Bash Nohup vs Kaufmännisches Und
- Führen Sie den Linux-Prozess im Hintergrund aus
- 
          
            das kaufmännische Und (&) Kontrolloperator
- 
          
            der nohup-Befehl
- 
          
            Unterschied zwischen dem Steueroperator &und dem Befehlnohup
 
Dieser kurze Artikel erklärt den Befehl nohup und den Steueroperator &, um Linux-Prozesse im Hintergrund über Bash auszuführen. Darüber hinaus werden wir uns weiter mit den Hauptunterschieden zwischen nohup und dem & befassen.
Führen Sie den Linux-Prozess im Hintergrund aus
Linux bietet zwei Methoden, um Prozesse oder Befehle im Hintergrund auszuführen.
- Verwenden Sie ausschließlich den Steueroperator kaufmännisches Und (&).
- Verwenden Sie den Befehl nohupin Verbindung mit&.
das kaufmännische Und (&) Kontrolloperator
Mit dem Steueroperator & können wir jeden Befehl asynchron im Hintergrund ausführen.
Betrachten Sie den folgenden Befehl.
sleep 10
Der Befehl sleep fügt eine Verzögerung um eine bestimmte Zeit hinzu. Wenn wir den Befehl sleep 10 ausführen, wird das Bash-Terminal für 10 Sekunden angehalten, und wir können keinen anderen Befehl auf dem Terminal ausführen.
Betrachten Sie nun den folgenden Befehl.
sleep 10 &
Der obige Befehl zeigt die Prozess-ID (PID) an und sleep 10 wird asynchron im Hintergrund ausgeführt. Die Ausführungskontrolle kehrt zum Befehlsterminal zurück, ohne auf das Ende von sleep zu warten.
Jetzt können wir jeden anderen Befehl auf demselben Terminal gleichzeitig mit dem Hintergrundbefehl sleep ausführen.
Mit dem folgenden Befehl können wir einen Hintergrundprozess in den Vordergrund verschieben.
fg
der nohup-Befehl
Der Befehl nohup führt jeden anderen Befehl oder Prozess aus. Es steht für no hang-up, was verhindert, dass der zugehörige Prozess das SIGHUP-Signal bekommt.
Wenn Sie einen Befehl auch nach dem Schließen des Terminals ausführen möchten, können Sie nohup CommandName verwenden.
Wenn wir jedoch einen Befehl im Hintergrund ausführen möchten, wobei die Ausführungskontrolle sofort an das Terminal zurückgegeben wird, müssen wir den folgenden Befehl verwenden.
nohup sleep 10 &
Der obige Befehl führt den Befehl sleep 10 im Hintergrund aus und gibt die Kontrolle sofort zurück, sodass wir jeden anderen Befehl auf demselben Terminal ausführen können.
Wir können die im Hintergrund laufenden Befehle mit dem Befehl pgrep wie folgt überprüfen:
pgrep -a [Command]
Der Befehl pgrep sucht nach dem Befehl und zeigt die Prozess-ID (PID) zusammen mit den Details des ausgeführten Befehls an.
Zum Beispiel zeigt pgrep -a sleep den relevanten Hintergrundprozess wie folgt an:
PID sleep 10
Hier stellt PID die Prozess-ID dar, die dem Befehl sleep zugewiesen ist.
Unterschied zwischen dem Steueroperator & und dem Befehl nohup
Im Folgenden sind die wenigen Unterschiede zwischen der Ausführung eines Befehls oder Prozesses im Hintergrund mit & und nohup aufgeführt.
- 
nohupkann das Auflegesignal abfangen (SIGHUP), während&dies nicht kann. DasSIGHUP-Signal wird verwendet, um ein Signal an die Prozesse zu senden, wenn das Terminal geschlossen wird, von dem aus der Prozess gestartet wird.
- 
Typischerweise läuft ein Prozess oder Befehl im Hintergrund mit &, bis die Shell existiert, von der aus dieser Befehl oder Prozess gestartet wird. Mit dem Beenden der Shell werden auch alle zugehörigen Befehle oder im Hintergrund laufenden Prozesse mit&beendet.Wenn ein Terminal beendet wird, beendet ein Auflegesignal mit SIGHUP (kill SIGHUP <pid>)alle Unterbefehle oder untergeordneten Prozesse dieses Terminals. Dies kann jedoch mitnohupverhindert werden.Der nohup-Befehl fängt dasSIGHUP-Signal ab und lässt es nicht zum eigentlichen Befehl gelangen. Daher wird verhindert, dass der Befehl beendet wird, wenn das Bash-Terminal beendet wird.
- 
Ein weiterer Unterschied zwischen &undnohupbetrifft die Umleitung vonstdout/stderr.Der Operator &leitet diestdout/stderrnicht automatisch um und zeigt die Ausgabe der Befehle direkt auf dem Terminal an. Allerdings leitetnohupdiestdout/stderrin eine Dateinohup.outum, die sich unter$HOMEbefindet.