Gut, hier nochmal:
Ziel:
Über ein Webinterface den Speicherverbrauch eines Daemons auszulesen.
Weg:
Code:
sudo -u www ps aux | grep 'httpd' | awk '{print $5}'
Erläuterung:
"sudo -u www" verwende ich bei dem Test deshalb um von vorneherein zu erfahren, ob genügend Rechte vorhanden sind um den Befehl als Benutzer "www" später auszuführen - was ja der Fall sein wird, wenn ich den Befehl nachher in ein Webinterface einbinde, welches sich auf dem selben Rechner befindet.
Über "ps aux" lasse ich mir alle Prozesse des Systems auflisten.
Über "grep 'httpd'" filtere ich die des Apachen heraus.
Über "awk '{print $5}'" filtere ich mir den fünften Block der ps Ausgabe heraus, welcher mir den Wert ausgibt der derzeit im RAM-Riegel verweilt.
So, nachdem ich in meiner Bash so erfolgreich war bin ich nun hergegangen und habe das ganze in mein Webinterface migriert.
Auszug aus dem Code meines Webinterfaces:
Code:
[...]
$shell_cmd=shell_exec("/bin/ps aux | /usr/bin/grep '$daemon' | /usr/bin/awk '{print $5}'");
[...]
... und auch gleich ausprobiert, ob es denn auch tut was ich verlange ... und festgestellt, dass es das für einige Daemons auch macht und mir erfolgreich den Wert ausgibt, für einige ABER NICHT - so z.B. für radiusd, oder httpd.
Das komische an der Geschichte ist nun aber dass er mir, wenn ich es über die Bash mach, er mir den Wert ausspuckt - ausnahmslos - Nur in der PHP-Shell zeigt sich dieses komische Verhalten ... und ich kapiere nicht wieso.
Mein erster Gedanke war ein Rechteproblem - also habe ich der PHP-Shell testweise root-Rechte vergeben - jedoch erfolglos.
Konnte ich mein Problem nun verständlicher erklären? Falls nicht, bitte nochmal genau nachhaken wo es klemmt - ich werde mich dann bemühen den Engpass verbessert zu schildern.