Pourquoi exécuter une commande shell Linux avec '&'?
Pour récupérer immédiatement votre invite et exécuter le processus en arrière-plan.
Quelle est leur fonction?
nohup permet au processus d'arrière-plan de continuer à s'exécuter même après la déconnexion de l'utilisateur (ou la fermeture du shell initiateur).
> & redirige la sortie standard et l'erreur standard dans le fichier journal.
& exécute le tout en arrière-plan, vous renvoyant immédiatement votre invite.
Explication:
Chaque processus Linux ouvre trois canaux d'E / S, une entrée "stdin", une sortie standard "stdout" et une sortie d'erreur standard "stderr". Ils peuvent être utilisés pour le binaire, mais ils sont traditionnellement du texte. Lorsque la plupart des programmes voient stdin fermer, ils se terminent (cela peut être modifié par le programmeur).
Lorsque le shell parent se termine, stdin est fermé sur les enfants et (souvent, généralement) les enfants sortent également. De plus, les enfants reçoivent un signal logiciel, SIGHUP, indiquant que l'utilisateur a "raccroché" (anciennement, le modem) et que la valeur par défaut ici est de quitter également. (Remarque, un programmeur peut changer tout cela lors de l'écriture du programme).
Donc, ce que fait rien est de donner au processus enfant un environnement d'E / S séparé, de lier les tenants et les aboutissants à quelque chose qui n'est pas lié au shell parent, et de protéger l'enfant du signal SIGHUP. Une fois que l'utilisateur se déconnecte, vous verrez le processus d'arrière-plan nohup appartenant à init (processus 1), pas le shell de l'utilisateur.
Cependant, nohup
ne peut pas faire le travail complètement si le processus est exécuté au premier plan, il &
est donc utilisé pour exécuter le programme en arrière-plan, où il peut continuer à fonctionner avec ou sans utilisateur connecté.