Heim  >  Artikel  >  Betrieb und Instandhaltung  >  So verwenden Sie den Befehl nohup unter Linux

So verwenden Sie den Befehl nohup unter Linux

PHPz
PHPznach vorne
2023-05-12 08:52:103971Durchsuche

Was ist nohup

nohup ist ein Befehl in Linux- und Unix-Systemen. Seine Funktion besteht darin, den Prozess im Hintergrund weiterlaufen zu lassen, wenn das Terminal beendet wird. Der vollständige Name lautet „no hang up“, was „kein Auflegen“ bedeutet. Mit dem Befehl nohup können Sie weiterhin Befehle ausführen, nachdem Sie das Terminal verlassen oder die SSH-Verbindung geschlossen haben. nohup是Linux和Unix系统中的一个命令,其作用是在终端退出时,让进程在后台继续运行。它的全称为“no hang up”,意为“不挂起”。nohup命令可以让你在退出终端或关闭SSH连接后继续运行命令。

nohup语法规则

nohup命令的基本语法如下:

nohup COMMAND [ARGS ...] [> output-file 2> error-file] &

其中的参数含义如下:

  • COMMAND:需要在后台运行的命令或脚本。

  • ARGS:命令或脚本的参数。

  • > output-file:输出重定向到指定的文件中。

  • 2> error-file:错误信息重定向到指定的文件中。

  • &:将命令放在后台运行。

nohup命令的执行过程分为以下几个步骤:

  • nohup命令将当前shell的标准输入、标准输出和标准错误输出全部重定向到/dev/null设备中,避免被关闭终端的信号所中断。

  • nohup命令将进程放到后台执行,并将进程的PID输出到终端。

  • 进程开始执行,并将标准输出和标准错误输出重定向到指定的文件中。

  • 用户可以退出终端或关闭终端窗口,进程仍然在后台运行。

nohup使用方法

使用nohup命令非常简单,按照上面的基本语法即可。以下是一些nohup命令的用法示例:

后台运行命令

要在后台运行命令,只需要在命令行中输入以下命令即可:

nohup COMMAND &

例如,在后台运行一个Bash脚本:

nohup bash test.sh &

标准输出重定向到文件

nohup bash test.sh > stdout.txt &

标准错误输出重定向到文件

nohup bash test.sh 2> stderr.txt &

将标准输出和标准错误输出都重定向到文件

1. 重定向到同一文件

nohup bash test.sh > output.txt 2>&1 &

2. 重定向到不同文件

nohup bash test.sh > stdout.txt 2> stderr.txt &

3. 一个更为复杂的例子,重定向标准输入(stdin):

nohup ./myprogram > foo.out 2> foo.err < /dev/null &

这里多出来一个f62490afdab35b5cc2a4d5cc181f10c7 Ausgabedatei: Die Ausgabe wird in die angegebene Datei umgeleitet. #🎜🎜#

  • #🎜🎜#2> error-file: Die Fehlermeldung wird in die angegebene Datei umgeleitet. #🎜🎜#
  • #🎜🎜#&: Führen Sie den Befehl im Hintergrund aus. #🎜🎜#
  • #🎜🎜#Der Ausführungsprozess des Nohup-Befehls ist in die folgenden Schritte unterteilt: #🎜🎜#
    • # 🎜🎜 Der Befehl #nohup leitet alle Standardeingaben, Standardausgaben und Standardfehlerausgaben der aktuellen Shell an das Gerät /dev/null um, um eine Unterbrechung durch ein Signal zum Schließen des Terminals zu vermeiden. #🎜🎜#
    • #🎜🎜#Der Befehl nohup stellt den Prozess zur Ausführung in den Hintergrund und gibt die PID des Prozesses an das Terminal aus. #🎜🎜#
    • #🎜🎜#Der Prozess startet die Ausführung und leitet die Standardausgabe und die Standardfehlerausgabe in die angegebene Datei um. #🎜🎜#
    • #🎜🎜#Benutzer können das Terminal verlassen oder das Terminalfenster schließen, und der Prozess läuft weiterhin im Hintergrund. #🎜🎜#
    #🎜🎜#nohup-Verwendungsmethode#🎜🎜##🎜🎜#Die Verwendung des nohup-Befehls ist sehr einfach. Befolgen Sie einfach die obige grundlegende Syntax. Hier sind einige Anwendungsbeispiele des Befehls nohup: #🎜🎜#

    Befehl im Hintergrund ausführen

    #🎜🎜#Um einen Befehl im Hintergrund auszuführen, geben Sie einfach den folgenden Befehl in die Befehlszeile ein: #🎜 🎜#rrreee #🎜🎜#Um beispielsweise ein Bash-Skript im Hintergrund auszuführen: #🎜🎜#rrreee

    Standardausgabe wird in eine Datei umgeleitet

    rrreee

    Standardfehlerausgabe wird in eine Datei umgeleitet

    rrreee

    Leiten Sie sowohl die Standardausgabe als auch die Standardfehlerausgabe in eine Datei um.

    #🎜🎜#1 In dieselbe Datei umleiten#🎜🎜#rrreee#🎜🎜#2 #🎜🎜#rrreee#🎜 🎜#3. Ein komplexeres Beispiel, die Standardeingabe umleiten (stdin): #🎜🎜#rrreee#🎜🎜#Es gibt einen zusätzlichen < Das bedeutet, dass die Standardeingabe nach <code>/dev/null umgeleitet wird, um sicherzustellen, dass das Programm keine Daten aus der Standardeingabe liest. #🎜🎜##🎜🎜#Hiermit soll ein praktisches Problem gelöst werden: Eine SSH-Sitzung weigert sich häufig, sich abzumelden (oder hängt), weil sie nicht bereit ist, die Daten zu verlieren, die mit dem/den Hintergrundjob(s) interagieren. Wenn dieses Problem auftritt, können Sie es mit dem obigen Befehl lösen, indem Sie dreimal umleiten. #🎜🎜#

    nohup Hintergrundprozessverwaltung

    #🎜🎜#Verwenden Sie den Befehl jobs, um die Liste der Aufgaben anzuzeigen, die im Hintergrund in der aktuellen Shell ausgeführt werden, einschließlich Aufgabennummern und Status und Befehle. #🎜🎜##🎜🎜#Zum Beispiel führen wir einen sleep 1000-Befehl im Hintergrund aus und verwenden den jobs-Befehl, um Folgendes anzuzeigen: #🎜🎜#rrreee#🎜🎜 #Wo, Quadrat Die Zahl in Klammern gibt die Aufgabennummer an, das Plus- oder Minuszeichen gibt die Priorität der Aufgabe an und Running gibt an, dass die Aufgabe im Hintergrund ausgeführt wird. Darüber hinaus gibt es weitere mögliche Zustände, darunter Stopped (gestoppt), Done (abgeschlossen) usw. #🎜🎜##🎜🎜#Wir können auch den Befehl fg verwenden, um eine Hintergrundaufgabe in den Vordergrund zu verschieben, um sie weiter auszuführen, zum Beispiel: #🎜🎜#rrreee#🎜🎜#Dieser Befehl nummeriert die Aufgabe 1 Die Aufgabe wird in den Vordergrund gerückt und die Ausführung wird fortgesetzt. Wenn Sie eine Aufgabe anhalten oder fortsetzen möchten, können Sie mit den Tasten Strg-Z das Signal SIGTSTP in der aktuellen Shell senden. #🎜🎜#rrreee#🎜🎜#Wenn Sie den Betrieb zu diesem Zeitpunkt wieder aufnehmen möchten, können Sie den Befehl bg verwenden: #🎜🎜#rrreee#🎜🎜#Wenn Sie die Aufgabe beenden möchten, Sie können den Befehl kill verwenden: #🎜🎜#rrreee#🎜🎜#Wenn Sie alle Hintergrundaufgaben beenden möchten, es aber mühsam finden, sie einzeln auszuführen, können Sie den Befehl disown verwenden -Befehl zur Lösung des Problems: # 🎜🎜#rrreee#🎜🎜#Dieser Befehl kann alle Hintergrundaufgaben beenden, es erfolgt jedoch keine Eingabeaufforderung. Sie können dies mit dem Befehl jobs bestätigen. #🎜🎜#

    Das obige ist der detaillierte Inhalt vonSo verwenden Sie den Befehl nohup unter Linux. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Stellungnahme:
    Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen