Sous Linux, le processus démon est également appelé « processus elfe ». Il s'agit d'un processus spécial qui s'exécute en arrière-plan et n'est contrôlé par aucun terminal. Il est utilisé pour effectuer des tâches système spécifiques. Le processus démon est indépendant du terminal de contrôle et exécute périodiquement certains événements au fur et à mesure qu'ils se produisent.
L'environnement d'exploitation de ce tutoriel : système linux5.9.8, ordinateur Dell G3.
Définition du processus démon
Un processus démon est également appelé processus démon. Il s'agit d'un processus spécial qui s'exécute en arrière-plan et n'est contrôlé par aucun terminal. Il est utilisé pour effectuer des tâches système spécifiques. De nombreux démons sont démarrés au démarrage du système et s'exécutent jusqu'à l'arrêt du système. D'autres ne démarrent qu'en cas de besoin et se terminent automatiquement lorsque la tâche est terminée.
Il est indépendant du terminal de contrôle et exécute périodiquement certains événements qui se produisent. Le démon est un processus très utile. La plupart des serveurs Linux sont implémentés à l'aide de processus démons.
Lorsque le système Linux démarre, de nombreux processus de service système seront démarrés. Ces processus de service système n'ont pas de terminaux de contrôle et ne peuvent pas interagir directement avec les utilisateurs. D'autres processus sont créés lorsque l'utilisateur se connecte ou exécute le programme, et se terminent lorsque l'opération se termine ou que l'utilisateur se déconnecte, mais le processus de service système (processus démon) n'est pas affecté par la connexion et la déconnexion de l'utilisateur, et ils sont toujours en cours d'exécution. Ce type de processus porte un nom appelé démon.
Utilisons la commande ps axj pour afficher les processus dans le système. Le paramètre a indique non seulement les processus de l'utilisateur actuel, mais aussi les processus de tous les autres utilisateurs ; le paramètre x indique non seulement les processus avec un terminal de contrôle, mais aussi tous les processus sans terminal de contrôle ; le paramètre j indique le listing ; et des informations pertinentes sur le contrôle des tâches.
(1) Tout ce qui contient -1 dans la colonne TPGID est un processus qui ne contrôle pas le terminal, c'est-à-dire un processus démon
(2) Le nom entre [ ] dans la colonne COMMANDE représente le thread du noyau. Ces threads sont créés dans le noyau, il n'y a pas de code d'espace utilisateur, donc il n'y a pas de nom de fichier programme ni de ligne de commande. Habituellement, un nom commençant par k est utilisé pour représenter le noyau
(3) Nous le connaissons déjà. avec le processus init, udevd est responsable de la maintenance des fichiers de périphérique du répertoire /dev, acpid est responsable de la gestion de l'alimentation et syslogd est responsable de la maintenance des fichiers journaux sous /var/log ; Le processus démon utilise généralement un nom se terminant par d, ce qui signifie Démon.
Caractéristiques du processus démon(1) Sous Linux, l'interface permettant à chaque système de communiquer avec les utilisateurs devient un terminal. Chaque processus qui démarre à partir de ce terminal sera attaché à ce terminal. Le terminal de contrôle ;
(2) Lorsque le terminal de contrôle est fermé, le processus correspondant se fermera automatiquement. Mais le processus démon peut dépasser cette limitation. Il est séparé du terminal et s'exécute en arrière-plan (le but d'être séparé du terminal est d'empêcher les informations pendant le processus en cours d'être affichées dans n'importe quel terminal et le processus le fera. ne soit généré par aucun terminal. interrompu par les informations du terminal), il commence à s'exécuter lorsqu'il est exécuté et ne se termine que lorsque l'ensemble du système est arrêté (bien sûr, cela peut être considéré comme tuant le processus démon correspondant
) ; 3) Si vous souhaitez qu'un processus ne soit pas bloqué à cause de l'utilisateur ou affecté par une interruption ou d'autres changements, alors ce processus doit être transformé en processus démon.
La relation entre les processus, les groupes de processus, les sessions et les terminaux de contrôleÉtant donné que la création d'un démon nécessite de modifier ces paramètres d'environnement, il est important de comprendre la relation entre eux :
Création d'un processus démon L'étape la plus critique dans la création d'un processus démon consiste à appeler la fonction setsid pour créer un nouveau leader de session.
#includepid_t setid(void);//该函数调用成功时返回新创建的Session的id(其实也就是当前进程的id),出错返回-1。
Notez qu'avant d'appeler cette fonction, le processus actuel n'est pas autorisé à être le leader du groupe de processus, sinon la fonction renvoie -1. Il est également facile de s'assurer que le processus actuel n'est pas le leader du groupe de processus. Il suffit de forker d'abord, puis d'appeler setsid. Le processus enfant créé par fork est dans le même groupe de processus que le processus parent. Le leader du groupe de processus doit être le premier processus du groupe, donc le processus enfant ne peut pas être le premier processus du groupe appelant setsid dans l'enfant. le processus sera Il n'y aura aucun problème.
Le résultat d'un appel réussi à cette fonction est :
(1) Créez une nouvelle session, le processus actuel est le leader de la session et l'identifiant du processus actuel est l'identifiant de la session
;(2) Créez un nouveau groupe de processus, le processus actuel est le leader du groupe de processus et l'identifiant du processus actuel est l'identifiant du groupe de processus
(3) Si le processus actuel avait à l'origine un terminal de contrôle ; , il perd ce terminal et devient un processus sans terminal de contrôle. (Le soi-disant terminal de contrôle perdu signifie que le terminal de contrôle d'origine est toujours ouvert et peut toujours être lu et écrit, mais il s'agit simplement d'un fichier ouvert ordinaire, pas d'un terminal de contrôle).
Comment tuer un démon
1. Commencez par ps axj | grep daemon name
, recherchez le démon correspondant, puis utilisez kill -9 daemon name
. code>Kill; ps axj | grep 守护进程名字
,找到相应的守护进程,然后使用kill -9 守护进程名
杀掉;
2.利用ps -ef
命令查找相应的守护进程,再用kill -9
ps -ef
pour trouver le processus démon correspondant, puis utilisez la commande kill -9
pour le tuer 3 ; . Les scripts Create Shell gèrent automatiquement le démarrage, l'arrêt et le redémarrage des processus. Recommandations associées : "Tutoriel vidéo Linux
"🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!