Hi,
Wenn ein Apache2 Prozess länger als x-Minuten eine CPU
Auslastung von x-Prozent verursacht, soll ein killall -9
apache2 ausgeführt werden.
Mithilfe des Befehls
ps -A -o „%cpu pid fname“ | grep apache
lassen sich alle apache kommandos mit vorgestellter cpu-auslastung anzeigen. der mittlere teil der ausgabe ist die prozess-id
dies kann durch anhängen von
kommando >/var/log/bad-apache.log
in eine entsprechende log-datei umgeleitet werden
und durch eine ja nach shell etwa so aussehnder
for (;
kommando >foo.log
sleep 20
next;
schleife regelmäßig gemacht werden. (die könnte man dann beim hochfahren oder starten. oder die schleife lassen und ein skript machen was ebend per cron aufgerufen wird. wobei ich bezweifele das cron dafür die richtige wahl ist, soll ja vermutlich nicht erst nach einer minute passieren, und auf maximal solceh zeitabstände ist cron ausgelegt.)
ein bisschen im manual von etwa bash (verwende ich) wühlen sagt dir dann auch wie du in jeder zeile der ausgabe von
tail -n 10 /var/log/bad-apache.log
die erste spalte addierst und bei entprechender grenzwertüberschreitung den gewünschten kill erledigt.
Sage ich alles nur so theoretisch weil ich das anliegen an sich nicht nachvollziehen kann und für völlig auf dem falschen weg halte.
Wieso sollte man einen Webserver killen, der gerade gut zu tun hat? Für die Skalierung und Selbstkontrolle bei hoher last hat insbesondere der Apache hervorragende eigene Kontrollmöglichkeiten. Ein so unschönes wegkillen wird da sicher nicht die beste Lösung sein.
Also: wo hakts, warum hast du das vor? es gibt immer etwas besseres als einen Server zu killen.
Grüße