La commande nohup ("no hangup") empêche un processus de se terminer lorsque l'utilisateur se déconnecte. Par exemple, si un administrateur lance un script de sauvegarde, puis se déconnecte du système, le script cessera de s'exécuter. En plaçant la commande nohup devant la commande normale, le script continuerait même après la déconnexion de l'administrateur.
Syntaxe
La syntaxe de la commande nohup est :
# nohup {command/script}
Si vous rencontrez l'erreur ci-dessous lors de l'exécution de la commande nohup :
nohup: command not found
vous pouvez essayer d'installer le package ci-dessous selon votre choix de distribution :
Répartition | Commande |
---|---|
OS X | brew install coreutils |
Debian | apt-get install coreutils |
Ubuntu | apt-get install coreutils |
Alpin | apk ajouter coreutils |
Arch Linux | pacman -S coreutils |
Kali Linux | apt-get install coreutils |
CentOS | yum install coreutils |
Fédora | dnf install coreutils |
Raspbian | apt-get install coreutils |
Exemples
1. Exécuter nohup sans spécifier de fichier de sortie
Prenons un exemple et testons qu'il continue de fonctionner après votre déconnexion. Nous allons lancer un script appelé script.sh. Le contenu du script est le suivant :
# cat script.sh #!/bin/sh while(true) do echo "Hello World!" sleep 10 done
Exécutons le script dans backgroupd avec la commande nohup :
# nohup script.sh & [1] 179 $ nohup: appending output to `nohup.out`
Comme vous pouvez le voir ci-dessus, nous n'avons pas spécifié de fichier de sortie. Ainsi, la sortie standard et l'erreur standard vont par défaut dans le fichier nohup.out dans le répertoire à partir duquel le script a été invoqué. Aussi le nombre 179 Spécifie l'ID de processus (PID) de la tâche. Ce PID peut être vérifié dans la sortie de la commande "ps -ef" comme indiqué ci-dessous.
Quittez maintenant le shell, reconnectez-vous et exécutez la commande suivante :
$ ps x | grep script.sh 179 ? S N 0:01 sh /root/script.sh 506 p2 S 0:00 grep script.sh
Le script fonctionne toujours. Utilisez « ps -ef | grep ps1" si votre système ne prend pas en charge ps x. Vous pouvez également vérifier le fichier de sortie nohup.out pour plus de confirmation.
# cat nohup.out Hello World! Hello World! Hello World! Hello World! ...REMARQUE :Si vous exécutez une autre commande à l'aide de nohup, la sortie est ajoutée au fichier nohup.out existant. Soyez prudent lorsque vous exécutez plusieurs commandes à partir du même répertoire, car toute la sortie est envoyée au même fichier nohup.out, ce qui peut prêter à confusion.
Exécuter nohup en spécifiant un fichier de sortie
Maintenant, le script ci-dessus peut également être exécuté avec la commande nohup et en spécifiant un fichier de sortie personnalisé comme indiqué ci-dessous :
# nohup script.sh > /tmp/script.out 2>&1 [1] 14235
Conclusion
Si vous exécutez un processus et que vous pensez qu'il ne sera pas terminé au moment où vous vous déconnectez pour la journée, utilisez la commande nohup. Nohup continuera le traitement lorsque vous quitterez votre compte. Nohup signifie pas de raccrochage .