Qu'est-ce qu'un démon ?
Un démon est une sorte de programme sur un système d'exploitation de type UNIX qui s'exécute en arrière-plan de manière discrète, plutôt que sous l'accès direct d'un utilisateur. Il attend d'être déclenché par l'apparition d'une condition ou d'un événement particulier.
En règle générale, les systèmes de type UNIX exécutent de nombreux démons, principalement pour répondre aux demandes de services via d'autres systèmes du réseau, à l'activité du matériel et également pour répondre à d'autres programmes.
Des exemples de conditions ou d'actions susceptibles d'activer des démons dans l'activité peuvent être une date ou une heure particulière, le passage d'un intervalle de temps décrit, la réception d'une demande Web ou d'un e-mail créé à partir d'une ligne de communication spécifique et un fichier atterrissant dans un répertoire spécifique.
types d'apprentissage automatique
Il n'est pas obligatoire que l'auteur d'une condition ou d'une action sache que le démon écoute.
Cependant, les programmes implémentent souvent une action simplement parce qu'ils savent qu'elle suscitera implicitement un démon.
Un démon est également appelé processus d'arrière-plan. Il s'agit d'un programme UNIX ou Linux qui s'exécute en arrière-plan. Presque tous les démons contiennent des noms qui se terminent par la lettre « d ». Par exemple, sshd, qui gère les connexions d'accès distant SSH, ou le démon httpd qui gère le serveur Apache. Souvent, Linux démarre les démons au moment du démarrage.
Divers scripts shell sont enregistrés dans le répertoire /etc/init.d. Ces scripts sont utilisés pour démarrer et arrêter les démons.
Processus Linux
Habituellement, les démons sont instanciés en tant que processus. Ces processus sont les instances en cours d’exécution ou d’exécution d’un programme. Un processus est géré par le noyau qui est le cœur du système d'exploitation et il attribue tous les numéros d'identification de processus spéciaux.
Sous Linux, il existe principalement trois types courants de processus qui sont les suivants :
- Lot
- Interactif
- Démon
Le processus par lots est soumis via une file d'attente de processus et n'est pas lié à la ligne de commande. Ces processus sont bien adaptés pour effectuer des opérations récurrentes si l’utilisation du système est faible.
qu'est-ce que s en python
Le processus interactif est exécuté de manière interactive par l'utilisateur sur la ligne de commande.
Le démon est identifié par un système comme les processus dont le processus parent contient un PID de un.
Toujours, il définit le processus init. Le processus d'initialisation est le processus initial qui démarre au démarrage d'un système Linux et qui reste sur le système jusqu'à son arrêt.
L'init peut adopter n'importe quel type de processus dont le processus parent se termine ou meurt sans attendre le statut du processus enfant.
Ainsi, la technique de base pour lancer le démon consiste à diviser ou à bifurquer deux ou une fois et à permettre également aux processus parents de se terminer pendant que le processus enfant commence à implémenter sa fonction générale.
Histoire des démons
Quelques démons sont publiés par les scripts d'initialisation du System V. Ce sont des scripts ou des programmes courts qui peuvent être exécutés automatiquement au démarrage du système. Ils peuvent soit être reproduits à intervalles réguliers, soit survivre pendant toute la durée de la session.
Désormais, plusieurs démons sont démarrés uniquement selon les besoins et par un seul démon (xinetd) au lieu de s'exécuter en continu. Le xinetd est connu sous le nom de super serveur TCP/IP.
Il est démarré au démarrage et écoute également différents ports attribués aux processus répertoriés dans le fichier de configuration, c'est-à-dire /etc/xinetd.conf ou /etc/inetd.conf.
Manuellement, quelques démons peuvent également être démarrés en inclusion pour être lancés par les programmes d'application et le système d'exploitation. Tous les démons ont un script individuel dans plusieurs systèmes d'exploitation de type UNIX, y compris Linux, avec lequel ils peuvent être redémarrés et terminés.
La gestion de ces scripts est mise en œuvre selon les niveaux d'exécution. Le niveau d'exécution peut être défini comme un état de fonctionnement ou de configuration d'un système qui autorise uniquement la disponibilité de certains processus sélectionnés. Commencer par un niveau d'exécution distinct peut permettre de résoudre certains problèmes, notamment la correction des erreurs système.
Points clés des démons
Certains points clés importants des démons sont expliqués ci-dessous :
- Le mot démon est tiré du grec méthodologie démon. Il s’agissait d’êtres surnaturels situés entre les mortels et les dieux et possédant un pouvoir ou une connaissance unique.
- En 1963, le terme démon a été initialement appliqué dans un contexte système sur le projet pionnier MAC avec l'aide d'IBM 7094.
- Il a été inspiré par le démon de la thermodynamique et de la physique de Maxwell, un agent abstrait qui supportait des molécules à des vitesses distinctes et travaillait sans relâche en arrière-plan.
- Après cela, le terme a été utilisé pour décrire les processus en arrière-plan qui travaillaient sans relâche pour mettre en œuvre les tâches du système.
- Le premier ordinateur démon était un programme qui créait automatiquement des sauvegardes sur bande.
- Ce terme a été utilisé pour une utilisation informatique. Il s'agissait d'une forme abrégée pour Disk and Execution MONitor.
- Divers programmes appelés services fonctionnent comme des démons sur le système d'exploitation Microsoft Windows. Cependant, le mot démon est aussi parfois appliqué à ces systèmes.
Implémentation de démons
Systèmes de type Unix
Le processus d'un système de type Unix est un démon si son processus parent meurt et que ce démon est désigné comme processus d'initialisation (processus numéro 1) comme processus parent et ne contient aucun terminal de contrôle de manière strictement technique.
Un démon peut cependant être n'importe quel processus en arrière-plan, qu'il soit ou non l'enfant du processus d'initialisation.
image de démarque
La technique de base pour une procédure devient un démon sur un système de type UNIX lorsque la procédure est lancée via la ligne de commande ou des scripts de démarrage comme le script System Starter ou le script init, implique :
- Suppression facultative des variables inutiles via l'environnement.
- Exécuté en tant que tâche en arrière-plan en quittant et en bifurquant. Il permet au parent du démon (processus de démarrage ou shell) de recevoir des notifications de sortie et de poursuivre l'exécution normale.
- Détachement via la section invoquante, généralement réalisé par une opération individuelle, setsid() :
- Dissociation via le terminal de contrôle.
- Créer une nouvelle session et devenir le leader de cette session.
- Devenir le leader du groupe de processus.
- Si le démon souhaite s'assurer qu'il n'héritera pas d'un nouveau contrôle tty, il peut se fermer et se bifurquer à nouveau. Cela signifie qu'il n'est plus un leader de session dans la nouvelle session et ne peut hériter d'aucun contrôle tty.
- Définition du répertoire de travail actuel comme répertoire racine afin que le processus n'utilise aucun répertoire susceptible de se trouver sur un système de fichiers monté.
- Modification de l'umask à 0 pour autoriser create(), open() et d'autres appels du système d'exploitation afin de faciliter leur masque d'autorisation et de ne pas s'appuyer sur tous les umask de l'appelant.
- Rediriger les descripteurs de fichiers 0, 1 et 2 pour les flux standard (stderr, stdout, stdin) vers un fichier journal ou /dev/null, et fermer tous les autres fichiers de descripteurs acquis via le processus parent.
Lorsque le processus démarre par un démon de super serveur comme systemd, launchd ou inetd, le super serveur implémentera ces fonctions pour ce processus, à l'exception des démons à l'ancienne non transformés en exécution sous systemd et décrits comme des serveurs de datagrammes multithread et Type=forking. sur inetd.
clé unique mysql
MS-DOS
Le programme de type démon a été exécuté en tant que logiciel de terminaison et de séjour résident (en abrégé TSR) au sein de la plate-forme Microsoft DOS.
Windows NT
Les programmes appelés services Windows implémentent les fonctions de ces démons sur les systèmes Microsoft Windows NT. Ils s'exécutent en tant que processus et n'interagissent généralement pas avec la souris, le clavier et le moniteur. Ils peuvent être lancés à l'aide du système d'exploitation au moment du démarrage.
Les services Windows sont arrêtés, démarrés et configurés manuellement par le Panneau de configuration (un programme de configuration/contrôle dédié), le système de script PowerShell ou les commandes net stop et net start, l'élément contrôleur de service du gestionnaire de contrôle de service.
Cependant, toute application Windows peut mettre en œuvre les responsabilités d'un démon, pas seulement comme un service, et quelques démons Windows contiennent la possibilité de s'exécuter comme un processus normal.
macOS et Mac OS classiques
Divers services et fonctionnalités optionnels ont été facilités par les fichiers chargés au moment du démarrage qui reconstruisent le système d'exploitation sur le Mac OS classique.
On les appelait panneaux de contrôle et extensions système. Les versions ultérieures de Mac OS standard les ont élargies avec des applications d'arrière-plan complètement sans visage.
Ces applications sont des applications régulières qui s’exécutent en arrière-plan. Celles-ci étaient toujours spécifiées comme extensions système habituelles pour l'utilisateur.
macOS est un système Unix et utilise des démons. macOS applique le terme de service pour désigner les logiciels qui implémentent les fonctions choisies via le menu des services au lieu d'appliquer ce terme comme le fait Windows pour les démons.
Fonctions typiques des démons
- Exécutez des actions planifiées comme cron.
- Surveillez les systèmes tels que la matrice RAID ou la santé du disque dur.
- Répondez à la demande du réseau et ouvrez le port réseau (comme le port 80).
Comment démarrer, redémarrer ou arrêter les démons pour une invite du shell ?
Nous devons appliquer leurs commandes de service comme ci-dessous :
service daemon-name-here start service daemon-name-here stop service daemon-name-here restart
Dans l’exemple suivant, étoiles, redémarrez et arrêtez.
service httpd start service httpd stop service httpd restart
Comment vérifier la liste de chaque démon en cours d’exécution ?
Pour vérifier l'état de chaque démon installé, tapez :
service - -status-all
Planifier notre démon
Quel démon va faire ?
Le démon doit implémenter une chose et bien la mettre en œuvre. Cette simple chose peut être aussi compliquée que de gérer un grand nombre de boîtes aux lettres sur plusieurs domaines ou aussi simple que d'appeler sendmail pour l'envoyer par courrier à un administrateur et spécifier un rapport.
Nous devons avoir une meilleure idée de ce qu'un démon doit faire dans tous les cas. Il va interagir avec quelques autres démons que nous pourrions spécifier ou non. C'est aussi autre chose à examiner.
ligne et colonne
Interaction
Les démons ne doivent jamais avoir de communication avec l'utilisateur directement via un terminal. Chaque communication passe par quelques types d'interfaces (que nous devrons peut-être ou non spécifier), qui peuvent être aussi compliquées que GUI+GTK ou aussi simples qu'un ensemble individuel.
La structure de base du démon
Daemon doit effectuer quelques tâches ménagères de bas niveau pour se préparer au vrai travail au démarrage. Cela implique quelques étapes qui sont les suivantes :
- Démarrez un super processus (processus parent)
- Modifier le masque du mode fichier (umask)
- Ouvrir les journaux pour écrire
- Créez un ID de session spécial (en abrégé SID)
- Modifier le répertoire de travail (actuel) vers un emplacement sécurisé
- Fermer les descripteurs de classement du fichier
- Entrez le code démon d'origine