Qu'est-ce qu'un démon?


12

J'entends beaucoup parler de démons fonctionnant sur mon ordinateur Ubuntu - quels sont-ils?

Réponses:


15

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.


8
pour développer cela, si vous arrivez à Linux à partir de Windows, vous pouvez considérer les démons comme l'équivalent * nix des "services" de Windows.
nathwill

1
@ stefano-palazzo Vous avez dit "... il n'y a pas de téléscripteur associé", mais ensuite "... vous remarquerez, après deux secondes, il s'imprime ...". Je pensais que détacher le TTY signifiait que vous ne pouviez pas écrire sur le terminal.
Jorge Bucaran

1
@JorgeBucaran Oui. L'impression est un peu coquine. Il peut toujours avoir une poignée sur le flux de sortie standard du terminal qui l'a démarré. Lorsque vous ouvrez un fichier (comme / dev / stdout), vous obtenez un numéro (appelé le descripteur de fichier), et c'est tout ce dont vous avez besoin pour y écrire tant que le processus qui l'a ouvert est toujours en cours d'exécution (vous pouvez voir fichiers ouverts dans /proc/*/fd). Un démon bien comporté se détachera complètement du tty en abandonnant les poignées à stdout, stderr et stdin.
Stefano Palazzo

1
@StefanoPalazzo je vois. On peut conserver une référence au processus parent std / out / err et toujours s'en détacher. Si je peux arbitrairement garder une référence à l'ATS, alors qu'est-ce que cela signifie de détacher un processus? J'ai trouvé < superuser.com/questions/178587/… > utile, mais je ne me sens toujours pas clair.
Jorge Bucaran

1
@JorgeBucaran cela signifie écraser les processus propres stdio (par exemple en utilisant dup2 ) avec les nouveaux que vous avez créés (comme un fichier journal). Voici un exemple complet
Stefano Palazzo

1

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


2
d'où vient la citation?
Zanna du

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.