la commande nohup
exécute un autre programme spécifié comme argument et ignore tous les signaux SIGHUP
(hangup). SIGHUP
est un signal envoyé à un processus lorsque son terminal de contrôle est fermé.
habituellement, lorsque vous exécutez un programme via SSH, si votre connexion est interrompue ou si vous vous déconnectez, la session est terminée et tous les processus exécutés à partir du terminal s’arrêtent. C’est là que la commande nohup
est très pratique., Il ignore tous les signaux de blocage et le processus continuera à s’exécuter.
Comment Utiliser le nohup Commande #
La syntaxe de la balise nohup
commande est comme suit:
nohup COMMAND
La commande n’acceptons pas d’autres options à l’exception de la norme --help
et --version
.,
prenons un coup d’oeil à l’exemple suivant:
nohup mycommand
nohup: ignoring input and appending output to 'nohup.out'
nohup
exécute le mycommand
commande dans le premier plan et redirige la sortie de la commande de la balise nohup.out
fichier. Ce fichier est créé dans le répertoire de travail actuel . Si l’utilisateur exécutant la commande ne dispose pas d’autorisations d’écriture sur le répertoire de travail, le fichier est créé dans le répertoire personnel de l’utilisateur.
Si vous quittez ou fermez le terminal, le processus n’est pas terminé.,
exécuter la commande en arrière-plan #
En utilisantnohup
au premier plan n’est pas très utile car vous ne pourrez pas interagir avec le shell tant que la commande ne sera pas terminée.
pour exécuter la commande en arrière-plan , ajoutez le symbole &
à la fin de la commande:
nohup mycommand &
la sortie comprend l’ID du travail shell (entouré de crochets) et l’ID du processus:
25177
eut utiliser l’ID de travail pour mettre la commande au premier plan en utilisant la commande fg
.,
Si, pour une raison quelconque, vous souhaitez mettre fin au processus, utilisez la commande kill
suivie de l’ID du processus:
kill -9 25132
redirigeant la sortie vers un fichier #
par défaut, nohup
redirige sortie dans le fichier nohup.out
. Si vous souhaitez rediriger la sortie vers un autre fichier, utilisez la redirection shell standard.,
par exemple, Pour rediriger la sortie standard et l’erreur standard à la balise mycommand.out
vous pouvez utiliser:
nohup mycommand > mycommand.out 2>&1 &
Pour rediriger la sortie standard et l’erreur standard de fichiers différents:
nohup mycommand > mycommand.out 2> mycommand.err &
des solutions de rechange #
Il y a plusieurs autres programmes que vous pouvez utiliser pour éviter une commande à la fin lorsque vous fermez le terminal ou débranché.,
Screen #
Screen ou GNU Screen est un programme multiplexeur de terminal qui vous permet de démarrer une session d’écran et d’ouvrir n’importe quel nombre de fenêtres (terminaux virtuels) à l’intérieur de cette session. Les processus s’exécutant à L’écran continueront à s’exécuter lorsque leur fenêtre n’est pas visible même si vous êtes déconnecté.
Tmux #
Tmux est une alternative moderne à la GNU écran. Avec Tmux, vous pouvez également créer une session et ouvrir plusieurs fenêtres à l’intérieur de cette session. Les sessions Tmux sont persistantes, ce qui signifie que les programmes exécutés dans Tmux continueront à s’exécuter même si vous fermez le terminal.,
Disown #
disown
est un shell intégré qui supprime une tâche shell du contrôle de tâche du shell. Contrairement à nohup
, vous pouvez également utiliser disown
sur les processus en cours d’exécution.
Conclusion #
nohup
vous permet d’empêcher la fin des commandes lorsque vous vous déconnectez ou quittez le terminal.