logo

Démon Linux

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

Liste des services démons pour les systèmes de type Unix et Linux

    anachron :Il exécute des actions cron retardées au moment du démarrage.et :Cela signifie Auto Mount Daemon.etc:Il exécute les tâches mises en file d'attente en appliquant l'outil.apmd :Cela signifie Advanced Power Management Daemon.crond :Il s'agit d'un démon de planificateur de tâches.autofs :Il aide le démon de montage automatique à permettre le démontage et le montage de périphériques en fonction de la demande.DHCP :Cela signifie Dynamic Host Configuration Protocol. Il s’agit également d’un serveur de protocole Internet Bootstrap.tassesd :Il signifie démon d'imprimante CUPS.ftpd :Cela signifie Démon du serveur FTP.httpd :Il s'agit d'un démon de serveur Web.fermé :Il peut acheminer les démons qui remplacent egpup et acheminer et gérer plusieurs protocoles de routage.lpd :Cela signifie Line Printer Daemon.imapd :C'est le démon du serveur imap.inetd :Cela signifie Internet Superserver Daemon.memchaché :Il s'agit d'un démon de mise en cache d'objets distribués en mémoire.mysql :Il s'agit d'un démon de serveur de base de données.monté :C'est un démon de montage.nfsd :Cela signifie Démon de partage de fichiers réseau.nommé:Il s'agit d'un démon de serveur DNS.nflock :Il est appliqué pour démarrer et arrêter les services de verrouillage des fichiers NFS.npd :Il signifie démon de service Network Time Protocol.nmbd :Cela signifie Démon de bloc de messages réseau.postgresql :Il s'agit d'un démon de serveur de base de données.suffixe :Il s'agit d'un agent de transport de courrier utilisé en remplacement de Sendmail.rpcbind :Il signifie Démon de liaison d'appel de procédure distante.acheminé :Il gère les tables de routage.smbd :C'est un démon Samba.envoyer un mail:Il s'agit d'un démon d'agent de transfert de courrier.smtpd :Cela signifie Simple Mail Transfer Protocol Daemon.calmar:Il s'agit d'un démon de serveur proxy de mise en cache de pages Web.snmpd :Cela signifie Simple Network Management Protocol Daemon.synchronisé :Il peut synchroniser divers systèmes de fichiers avec la mémoire système.sshd :Il s'agit d'un démon de serveur Secure Shell.journal système :Il signifie démon de journalisation système.telnetd :Il s'agit d'un démon de serveur Telnet.tcpd :Il dispose d'un wrapper de service qui peut restreindre l'autorisation aux services basés sur inetd à partir de hosts.deny et hosts.allow.vsftpd :Cela signifie Démon FTP très sécurisé.webmin :Il s'agit d'un démon de serveur d'administration basé sur le Web.xntd :Il s'agit d'un démon de serveur de temps réseau.xinetd :Il s'agit d'un démon de superserveur Internet amélioré.