raws17
Goto Top

Speicherbelegung eines einzelnen Prozesses auslesen

Consolen Befehl um Speicherbelegung und eventl. Prozessorauslastung für einen einzelnen Prozess auslesen

Hallo,

ich hab vor in meinem Webinterface die Speicherauslastung&Prozessorauslastung eines Prozesses,
den ich von da aus starte, auszugeben.
Also es sollte wie folgt aussehen:
http://www.gamecreate.com/images/screenshots/game-serverstatus.png

Ich brauche erstmal den Linux Befehl um es auszulesen und später dann in php auszugeben.
PHP schaffe ich alleine, aber ich finde keine Möglichkeit es bei Linux auszulesen.
Die Komplette Auslastung ist klar, die gebe ich auch schon aus.
Nur für einzelne Prozesse find ich keinen Weg.

PS:
Ich benutze eine abgespecktes Red Hat Linux.

Gruß,
raws17

Content-ID: 99460

Url: https://administrator.de/contentid/99460

Ausgedruckt am: 23.11.2024 um 01:11 Uhr

theton
theton 16.10.2008 um 13:29:26 Uhr
Goto Top
Ich würde eine zusätzliches Tool in einer "echten" Programmiersprache schreiben und einfach die Werte aus /proc auswerten. Gibt diverse Funktionen in C, die dafür genutzt werden können. Mit einer Webscriptsprache kommst du da jedenfalls nicht weit, da diese nunmal nicht auf die Auswertung von Systemdaten ausgelegt ist.
raws17
raws17 16.10.2008 um 13:32:51 Uhr
Goto Top
Hallo,

ich will mit php ja auch nur die fertigen Ergebnisse auslesen.
Ich hab bis jetzt kein Befehl gefunden, der die Auslastung EINZELNER Prozesse anzeigt und soetwas brauche ich.
Also ein Consolen Kommando.
Mir ist klar, das ich das mit php nich hinbekomme, aber mit php kann ich es von der Konsole auslesen ;)

Gruß
raws17
raws17 16.10.2008 um 14:11:25 Uhr
Goto Top
Prozessorauslastung habe ich hinbekommen:

<?php
$data1 = shell_exec('ps aux | grep hlds_amd');
$load = explode(' ', $data1);
$prozess = $load[7];
$zw = " %";
$hii = $prozess.$zw;
if($checkserveron)
{
echo $hii;
}
else
{
echo "-";
}
?>

Für Speicher brauche ich aber MB und nicht die % face-sad
raws17
raws17 16.10.2008 um 14:53:59 Uhr
Goto Top
Speicher:

<?php
$fram22 = shell_exec('free -m');
$freeram = explode(" ", $fram22);
$fullram = $freeram[4];

$data1 = shell_exec('ps aux | grep srcds_amd');
$load = explode(' ', $data1);
$prozent = $load[7];
$kb = $fullram*$prozent;
$zahl = $kb/100;
$mb = " MB";
echo $zahl.$mb;
?>
theton
theton 16.10.2008 um 15:22:24 Uhr
Goto Top
Ohje... php und exec nutzen. Sicher wird dieses Tool mit Sicherheit nicht sein, solange die PHP-Einstellungen sowas zulassen. Naja... dein Ding. Hoffen wir mal, dass du das nur in einem gesichterten LAN nutzt.

Um Speichergrössen usw. zu ermitteln, hab ich vor einiger Zeit mal pswatch geschrieben. http://pswatch.sourceforge.net/ Ist zwar noch nicht ganz ausgereift, aber du bekommst damit die verschiedenen Speichergrössen angezeigt mittels 'pswatch -p <PID>'. Interessant wäre für dich dann die Virtual memory size, die pswatch in Byte ausgibt. Beispiel:

bitmuncher@admin-laptop:~/Dokumente/src/pswatch$ ./pswatch -p 20069 | grep Virtual
Virtual memory size:             52616

Wenn du nur die Zahl brauchst, geht das leicht über die Format-Flags:

pswatch -f m -p <PID>

Beispiel:

bitmuncher@admin-laptop:~/Dokumente/src/pswatch$ ./pswatch -f m -p 20069
52596

Verbraucht definitiv drastisch weniger Rechenleistung als dieses Rumgerechne in PHP.