Je ne sais jamais quel est le meilleur moment pour utiliser nohup et le & à la fin de la commande.
Nohup fait qu'un programme ignore le signal HUP, lui permettant de s'exécuter après la fermeture du terminal actuel / la déconnexion de l'utilisateur. Nohup n'envoie pas le programme en arrière-plan.
& à la fin de la commande est lié au contrôle des tâches shell, permettant à l'utilisateur de continuer à travailler dans la session shell actuelle.
Généralement, nohup et & sont combinés pour lancer un programme qui s'exécute après la déconnexion de l'utilisateur et permet de continuer le travail à la session shell actuelle.
En règle générale, j'utilise &
lorsque je veux exécuter en arrière-plan une commande qui ne prendra pas longtemps à exécuter, ou une où je ne me soucierai pas vraiment de la fin du programme si je suis déconnecté de façon inattendue d'une session.
xcalc &
rdesktop 1.2.3.4 &
./this_only_takes_a_few_seconds_but_i_want_my_shell_back.py &
Lorsque je travaille sur un VPN ou une connexion à distance douteuse, j'ai tendance à utiliser nohup
pour exécuter tout ce qui prendra un certain temps. Lors de l'exécution d'importations de données volumineuses sur un hôte distant, par exemple, vous pouvez utiliser nohup
pour vous assurer que la déconnexion ne vous fera pas recommencer lorsque vous vous reconnecterez.
nohup ./do_data_load.py mydatafile.txt &
Il est également utilisé lorsqu'un développeur ne démonifie pas correctement un service, vous devez donc l'utiliser nohup
pour vous assurer qu'il n'est pas tué lorsque vous vous déconnectez.
nohup sillyd &
Si vous oubliez d'utiliser nohup
lors de l'exécution de quelque chose comme les deux derniers exemples, vous pouvez utiliser le bash ou zsh intégré disown
dans le même effet.
$ sillyd &
[1] 12345 # Whoops!
$ disown %1
Il est assez rare de l'utiliser nohup
sans &
, car vous ne pouvez pas vraiment vous reconnecter à la session nohup'd si vous êtes déconnecté. Cela élimine à peu près son utilité pour les commandes interactives. Dans le cas où vous avez une commande interactive que vous souhaitez conserver pendant les sessions ou éviter des déconnexions compliquées, vous pouvez utiliser screen
. La puissance de feu d'une screen
session pleinement armée et opérationnelle est au-delà de la portée de ce poste, vous devriez donc la vérifier plus en détail .
byobu
ce qui ajoute de belles fonctionnalités à l'écran. Il est disponible dans la plupart des dépôts apt et dans les dépôts EPEL pour Red Hat.nohup: déconnecte l'utilisateur actuel, le processus ne s'arrêtera pas
&: avec ce symbole, il n'y aura pas de sortie dans le terminal actuel, le processus est exécuté en arrière-plan
la source