Vérifier si un processus est en cours d'exécution à l'aide de PHP sous Linux
Je suis en utilisant kannel pour envoyer des SMS via PHP. Je veux savoir comment puis-je vérifier si un processus est en cours d'exécution. Pour kannel à terme, un processus nommé bearerbox
doit être en cours d'exécution de tous les temps. Je veux vérifier si ce processus est en cours d'exécution ou non. Parce que si le processus n'est pas en cours d'exécution, puis un mail sera envoyé à moi de m'aviser à ce sujet.
vous pouvez utiliser la fonction exec de php
Assurez-vous qu'il n'est pas possible pour les utilisateurs externes à modifier votre exec() appelle, coder en dur, si possible. Mauvais code peut donner mal de gens à l'esprit de l'accès à l'ensemble du système.
ouais je vais garder cela à l'Esprit. @ldg merci pour la suggestion, mon pote, c'est exactement ce que je vais être en utilisant.
Double Possible de Vérifier si le processus encore en cours?
Assurez-vous qu'il n'est pas possible pour les utilisateurs externes à modifier votre exec() appelle, coder en dur, si possible. Mauvais code peut donner mal de gens à l'esprit de l'accès à l'ensemble du système.
ouais je vais garder cela à l'Esprit. @ldg merci pour la suggestion, mon pote, c'est exactement ce que je vais être en utilisant.
Double Possible de Vérifier si le processus encore en cours?
OriginalL'auteur hsinxh | 2011-06-19
Vous devez vous connecter pour publier un commentaire.
Le plus simple est d'utiliser
pgrep
, qui a un code de sortie 0 si le processus existe, 1 sinon.Voici un exemple.
Vous voudrez peut-être vérifier, mais d'après ce que j'ai trouvé les codes de sortie sont le contraire - 1, si elle existe; 0 si non. Quelqu'un peut éclaircir sur ce point?
pgrep échoue (rc=1) si aucun processus n'est trouvé avec ce nom (juste essayé).
Par shell, oui, mais j'ai juste essayé en PHP CLI et il fait le contraire.
$output
retournera un tableau vide ou avec chaque PID. En écho à laexec()
commande retourne le PID ou null.$return
retournée 0 si le processus n'existe pas et 1 si c'est le cas!Ps: C'est à l'aide de PHP 5.4.9 sur Ubuntu 13
OriginalL'auteur Mat
Vous pouvez utiliser la commande exec pour trouver votre processus et ensuite agir en conséquence.
Quelque chose comme:
exec('ps aux | grep bearerbox', $output);
Vous aurez besoin de travailler sur ce qui est retourné sur votre serveur afin de déterminer si elle est en cours d'exécution ou non.
Bonne chance.
OriginalL'auteur Nathan Poole
Il y a beaucoup de façons de traiter ce. La méthode la plus simple (et une réponse directe à votre question), c'est de prendre la sortie de 'ps'.
Deamons ont tendance à créer un " pid " le fichier si. Ce fichier contient l'id du processus du démon. Si le vôtre a cela, vous pouvez vérifier le contenu du fichier et de voir si le processus d'identification est toujours en cours d'exécution. Ce qui est plus fiable.
supervisord pourrait aussi avoir cette fonctionnalité. Enfin, peut-être que c'est mieux d'avoir un vrai système de surveillance plutôt que de construire quelque chose de vous-même. Nagios peut être une bonne pioche, mais il pourrait y en avoir d'autres.
OriginalL'auteur Evert
Simple mais pratique pour suivre les processus par le biais de PHP: PHP-Linux-Processus-Moniteur.
Le code des objectifs comme:
OriginalL'auteur Samer Ata
C'est la meilleure façon
dans le code ci-dessus gs est le processus que j'ai été vérifier
OriginalL'auteur Kiran Reddy