Android

Commande nohup Linux

nohup - Run Commands in the Background - Linux CLI

nohup - Run Commands in the Background - Linux CLI

Table des matières:

Anonim

La commande nohup exécute un autre programme spécifié comme argument et ignore tous les signaux SIGHUP (raccrochage). SIGHUP est un signal qui est envoyé à un processus lorsque son terminal de commande est fermé.

Habituellement, lorsque vous exécutez un programme sur SSH, si votre connexion tombe ou que 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 utile. Il ignore tous les signaux de raccrochage et le processus continuera de s'exécuter.

Comment utiliser la commande nohup

La syntaxe de la commande nohup est la suivante:

nohup COMMAND

La commande n'accepte aucune autre option que les options --help et --version standard.

Jetons un œil à l'exemple suivant:

nohup mycommand

nohup: ignoring input and appending output to 'nohup.out'

nohup exécute la commande mycommand au premier plan et redirige la sortie de la commande vers le fichier nohup.out . 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 dans le répertoire de travail, le fichier est créé dans le répertoire personnel de l'utilisateur.

Si vous vous déconnectez ou fermez le terminal, le processus n'est pas terminé.

Exécution de la commande en arrière-plan

L'utilisation de nohup 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 inclut l'ID du travail du shell (entouré de crochets) et l'ID du processus:

25177

Vous pouvez utiliser l'ID du travail pour mettre la commande au premier plan à l'aide de 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

Rediriger la sortie vers un fichier

Par défaut, nohup redirige la sortie de la commande vers le fichier nohup.out . Si vous souhaitez rediriger la sortie vers un autre fichier, utilisez la redirection standard du shell.

Par exemple, pour rediriger la sortie standard et l'erreur standard vers mycommand.out vous utiliseriez:

nohup mycommand > mycommand.out 2>&1 &

Pour rediriger la sortie standard et l'erreur standard vers différents fichiers:

nohup mycommand > mycommand.out 2> mycommand.err &

Alternatives

Il existe plusieurs programmes alternatifs que vous pouvez utiliser pour éviter qu'une commande ne se termine lorsque vous fermez le terminal ou que vous vous déconnectez.

Écran

Screen ou GNU Screen est un programme de multiplexage de terminal qui vous permet de démarrer une session d'écran et d'ouvrir un nombre illimité de fenêtres (terminaux virtuels) à l'intérieur de cette session. Les processus s'exécutant dans Screen continueront de s'exécuter lorsque leur fenêtre n'est pas visible même si vous êtes déconnecté.

Tmux

Tmux est une alternative moderne à l'écran GNU. 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 s'exécutant dans Tmux continueront de s'exécuter même si vous fermez le terminal.

Renier

disown est un shell intégré qui supprime un travail shell du contrôle de travail 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.

terminal nohup