Je cherche un moyen de supprimer tous les processus portant le même nom et fonctionnant depuis plus de X fois. Je génère beaucoup d'exemples de cet exécutable particulier, et parfois, il entre dans un mauvais état et fonctionne pour toujours, prenant beaucoup de ressources processeur.
J'utilise déjà monit, mais je ne sais pas comment vérifier un processus sans fichier pid. La règle serait quelque chose comme ceci:
kill all processes named xxxx that have a running time greater than 2 minutes
Comment exprimeriez-vous cela in monit?
monitoring
monit
Parand
la source
la source
Réponses:
Dans monit, vous pouvez utiliser une chaîne de correspondance pour les processus sans PID. En utilisant l'exemple d'un processus nommé "myprocessname",
Peut-être que si vous vérifiez si la charge du processeur est à un certain niveau pendant 10 cycles de surveillance (de 30 secondes chacun), puis redémarrez ou tuez, cela pourrait être une option. Vous pouvez également utiliser les tests d’horodatage de monit sur un fichier lié au processus.
la source
Il n'y a pas d'outil prêt à l'emploi avec cette fonctionnalité. Supposons que vous souhaitiez supprimer les scripts php-cgi, dont la durée est supérieure à minute. Faire ceci:
pgrep php-cgi | xargs ps -o pid,time | perl -ne 'print "$1 " if /^\s*([0-9]+) ([0-9]+:[0-9]+:[0-9]+)/ && $2 gt "00:01:00"' | xargs kill
pgrep
sélectionnera les processus par leur nom,ps -o pid,time
imprimera le runtime pour chaque pid, analysera la ligne, en extraira l'heure et imprimera le pid si le temps est comparable à celui défini. résultat passé à tuer.la source
J'ai résolu ce problème avec ps-watcher et en ai parlé sur linux.com il y a quelques années. ps-watcher vous permet de surveiller les processus et de les tuer en fonction du temps d'exécution accumulé. Voici la configuration appropriée de ps-watcher, en supposant que votre processus s'appelle 'foo':
La clé est la ligne
qui dit 'si le temps de processus accumulé est> 1 heure ET que je ne suis pas le processus parent, redémarrez-moi.
Donc, je me rends compte que la réponse n’utilise pas monit, mais que ça marche. ps-watcher est léger et simple à configurer. Par conséquent, rien ne vous empêche de le faire en plus de votre configuration monit.
la source
Monit peut le faire à partir de la version 5.4:
Voir: le fichier CHANGES du projet
la source
Vous pouvez utiliser cela comme une instruction exec.
la source