Comment utiliser pid pour vérifier si un processus existe sous Linux

WBOY
Libérer: 2022-04-07 14:29:47
original
6822 Les gens l'ont consulté

Sous Linux, vous pouvez utiliser la commande kill pour vérifier si le processus existe en fonction du pid. "kill -0" n'enverra pas de signal au processus, mais effectuera une vérification des erreurs si le processus existe, le résultat renvoyé. est 0. Si le processus n'existe pas, le résultat renvoyé est 1 et la syntaxe est "kill -0 pid".

Comment utiliser pid pour vérifier si un processus existe sous Linux

L'environnement d'exploitation de ce tutoriel : système linux7.3, ordinateur Dell G3.

Comment utiliser pid pour vérifier si un processus existe sous Linux

Supposons que nous souhaitions maintenant surveiller si un processus est actif et le vérifier toutes les minutes. En utilisant la méthode ci-dessus, nous devons exécuter la commande ps toutes les minutes et effectuer une opération. grep recherche régulière. Cette surcharge semble n'être rien sur le serveur, mais que se passe-t-il si nous voulons surveiller des dizaines ou des centaines de processus de ce type sur le même nœud en même temps ? Par conséquent, nous devons explorer de meilleures méthodes du point de vue des performances.

Pour les processus démons, ils ont généralement leurs propres fichiers pid ou lock. Nous pouvons vérifier si ces fichiers existent pour déterminer si le processus existe. Cependant, dans certaines circonstances anormales, le processus dans lequel se trouve le fichier pid n'existe pas. Par conséquent, vous ne pouvez pas vous fier au fichier pid du processus pour détecter si le processus est actif.

Un moyen fiable consiste à utiliser "kill -0 pid", kill -0 n'enverra aucun signal au processus, mais effectuera une vérification des erreurs. La commande renvoie 0 si le processus existe et 1 s'il n'existe pas.

Comment utiliser pid pour vérifier si un processus existe sous Linux

Cependant, cette méthode ne peut être utilisée que par les utilisateurs ordinaires pour vérifier leurs propres processus, car l'envoi de signaux aux processus d'autres utilisateurs provoquera une erreur en raison d'un manque d'autorisation et la valeur de retour est également de 1.

[sw@gentoo ~]$ kill 2993
-bash: kill: (2993) - Operation not permitted
[sw@gentoo ~]$ echo $?
1
[sw@gentoo ~]$
Copier après la connexion

Bien sûr, si vous exécutez la commande kill en tant qu'utilisateur privilégié, il n'y aura aucun problème d'autorisation.

D'un autre côté, nous savons que le noyau exportera les informations sur les processus exécutés dans le système via le système de fichiers virtuel /proc. Chaque processus a un répertoire /proc/ On peut donc convertir la détection de l'existence du processus en détection de l'existence du répertoire /proc/, ce qui est beaucoup plus simple.

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal