Maison >Opération et maintenance >exploitation et maintenance Linux >Comment utiliser la commande nohup sous Linux
nohup
est une commande dans les systèmes Linux et Unix. Sa fonction est de permettre au processus de continuer à s'exécuter en arrière-plan lorsque le terminal se ferme. Son nom complet est « no hang up », ce qui signifie « pas de raccroche ». La commande nohup
vous permet de continuer à exécuter des commandes après avoir quitté le terminal ou fermé la connexion SSH. nohup
是Linux和Unix系统中的一个命令,其作用是在终端退出时,让进程在后台继续运行。它的全称为“no hang up”,意为“不挂起”。nohup
命令可以让你在退出终端或关闭SSH连接后继续运行命令。
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 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 &
这里多出来一个7dca1cd4ab15fe0f83b4f2cc649e3361 fichier de sortie
: rediriger la sortie vers le fichier spécifié. 🎜
2> error-file
: Le message d'erreur est redirigé vers le fichier spécifié. 🎜&
: Exécutez la commande en arrière-plan. 🎜/dev/null
pour éviter d'être interrompues par des signaux qui ferment le terminal. 🎜/dev/null
pour garantir que le programme ne lit aucune donnée de l'entrée standard. 🎜🎜Il s'agit de résoudre un problème pratique : la session SSH refuse souvent de se déconnecter (ou se bloque) car elle ne veut pas perdre les données qui interagissent avec le(s) travail(s) en arrière-plan. Lorsque vous rencontrez ce problème, vous pouvez utiliser la commande ci-dessus pour le résoudre en redirigeant trois fois. 🎜jobs
pour afficher la liste des tâches exécutées en arrière-plan dans le shell actuel, y compris les numéros de tâches, l'état et les commandes. 🎜🎜Par exemple, nous exécutons une commande sleep 1000
en arrière-plan, utilisons la commande jobs
pour visualiser : 🎜rrreee🎜 Parmi eux, le nombre entre crochets représente la tâche nombre, plus ou moins Le nombre indique la priorité de la tâche et En cours d'exécution
indique que la tâche s'exécute en arrière-plan. De plus, il existe d'autres états possibles, notamment Stopped
(arrêté), Terminé
(terminé), etc. 🎜🎜Nous pouvons également utiliser la commande fg
pour déplacer une tâche en arrière-plan au premier plan pour continuer son exécution, par exemple : 🎜rrreee🎜Cette commande déplacera la tâche avec la tâche numéro 1 au premier plan et poursuivra l'exécution . Si vous souhaitez suspendre ou reprendre une tâche, vous pouvez utiliser les touches Ctrl-Z
pour envoyer le signal SIGTSTP
dans le shell actuel. 🎜rrreee🎜Si vous souhaitez reprendre l'opération à ce moment, vous pouvez utiliser la commande bg
: 🎜rrreee🎜Si vous souhaitez tuer la tâche, vous pouvez utiliser la commande kill
commande : 🎜rrreee🎜Si Si vous souhaitez supprimer toutes les tâches en arrière-plan, mais que vous trouvez difficile de les effectuer une par une, vous pouvez utiliser la commande disown
pour résoudre le problème : 🎜rrreee🎜Cette commande peut supprimer toutes les tâches en arrière-plan, mais il n'y aura aucune invite. Vous pouvez le confirmer avec la commande jobs
. 🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!