J'entends beaucoup parler de démons fonctionnant sur mon ordinateur Ubuntu - quels sont-ils?
J'entends beaucoup parler de démons fonctionnant sur mon ordinateur Ubuntu - quels sont-ils?
Réponses:
En bref, un démon est un processus d'arrière - plan .
Les démons peuvent être simplement des programmes normaux qui s'exécutent en arrière-plan, mais la plupart sont créés en démarrant un processus, en le forçant et en quittant le parent.
Forker un processus signifie en créer une copie exacte. Le parent de ce processus, si le vrai parent se termine immédiatement, est maintenant le processus init à /sbin/init
, qui est la première chose démarrée sur chaque système d'exploitation de type Unix. Maintenant, le processus est appelé un démon, il n'a pas de TTY associé.
Voici un exemple de démon en Python:
import sys, os, time
pid = os.fork()
# there now exist two processes
if pid > 0: # If this is the parent,
sys.exit(0) # quit.
# this is the background part:
time.sleep(5)
print "Hello, World!"
Ce n'est pas encore un, à proprement parler. Vous devez également modifier le répertoire de travail actuel, redéfinir l'entrée et la sortie standard en fichiers journaux, etc. Vous pouvez lire les détails sanglants dans cet article wikipedia .
Si vous exécutez l'exemple, vous remarquerez qu'au bout de deux secondes, il s'imprime, même si le processus que vous avez démarré sur la ligne de commande est terminé. La copie de ce processus est exécutée «par» init maintenant.
/proc/*/fd
). Un démon bien comporté se détachera complètement du tty en abandonnant les poignées à stdout, stderr et stdin.
Dans les systèmes d'exploitation informatiques multitâches, un démon est un programme informatique qui s'exécute comme un processus d'arrière-plan, plutôt que d'être sous le contrôle direct d'un utilisateur interactif. Traditionnellement, les noms de processus d'un démon se terminent par la lettre d, pour préciser que le processus est en fait un démon et pour différencier un démon d'un programme informatique normal. Par exemple, syslogd est le démon qui implémente la fonction de journalisation du système et sshd est un démon qui sert les connexions SSH entrantes.
Comme vous pouvez voir la couche du démon