Je me demandais juste, par exemple quand je lance qtox
avec:
qtox &
Et puis fermez Terminal, qtox
ferme avec lui. Cependant lors de l'exécution etherape
avec:
sudo etherape &
La fermeture du terminal ne ferme pas et ne cause aucun problème à Etherape. Et parmi les différentes applications, il existe des comportements différents, certains se ferment lorsque Terminal est fermé, d'autres non, comment se fait-il? Pourquoi certains ferment-ils alors que d'autres ne le font pas? J'utilise Ubuntu GNOME 15.10 avec GNOME 3.18.
qtox
quitter lorsque vous fermez le terminal, vous pouvez toujours l'exécuter avecnohup qtox &
.Réponses:
Lorsque vous fermez un terminal, le terminal envoie un signal SIGHUP au shell; le shell, à son tour, envoie un signal SIGHUP à tous ses groupes de processus enfants, qui incluent des groupes de processus en arrière-plan;
La façon dont chaque processus réagira au signal dépend entièrement du processus: si le processus n'a pas défini de gestionnaire pour le signal et dit au noyau (via un appel système tel que
signal()
ousigaction()
) qu'il souhaite le gérer, le noyau s'exécute le gestionnaire par défaut du signal, qui en cas de signal SIGHUP consiste à terminer le processus.Cependant, lorsque vous exécutez une commande avec
sudo
, l'UID dusudo
processus et de son processus enfant est défini sur0
(root); en général, à moins que l'UID du processus envoyant le signal soit0
(root) ou identique au processus cible, le noyau rejette le signal (c'est-à-dire qu'un processus ne peut pas envoyer de signaux à un processus appartenant à un autre utilisateur, à moins que le processus l'envoi du signal appartient à root); c'est pourquoi un processus exécuté par l'utilisateur tel que l'instance Bash exécutée par le terminal ne peut pas SIGHUP unsudo
processus et, en fin de compte, la fermeture d'un terminal n'affecte pas un processus démarré avecsudo
.la source
nohup
devant ces commandes qui se ferment avec SIGHUP :) Upgoatedsudo
.sudo
exécute simplement la commande en tant qu’autre utilisateur et vous ne pouvez pas envoyer de signal aux processus des autres utilisateurs. Tu voisman 2 kill
.sudo
une sorte de pauvrenohup
?sudo
desudo
pour sonnohup
effet secondaire, compte tenu de tous les autres inconvénients.nohup
, il crée desnohup.out
fichiers inutiles après. Utilisezdisown
plutôt la commande intégrée.