Untitled Document
Monitorizando procesos en windowsXP y Linux

Por Sharek 14:52 20/01/2003

A veces es interesante saber si tienes un proceso activo en la maquina para generar la web de una forma u otra...
ej: Avisar a los usuarios que estás haciendo backup, o que estás conectado al irc o tienes el messanger encendido...
Esto se puede hacer en 2 sistemas (que yo sepa) y usando tuberias...
En windowsXP hay un bonito comando llamado "tasklist", en linux "ps"
Nota: Este ejemplo será orientado a windowsXP, ya que en estos momentos no dispongo de una maquina linux en la cual probar el ejemplo, de todas formas, no varia mas que el comando y sus parametros...

Paso 1 Nos curramos la tuberia: (llamando a tasklist con unos cuantos parametros extra para luego poder cogerlo desde php mas facilmente)
Miraros el manual en: Menú Inicio => Ayuda y soporte tecnico

$fp=popen("tasklist /fo CSV /nh","r");

el bucle para leer linea a linea la salida del programa

while (!feof($fp))
{
$lin=fgets($fp,255);
echo $lin."<br>";
}

Cerramos la tuberia

pclose($fp);

Si ejecutamos ese codigo, tendremos algo parecido a esto:

"System Idle Process","0","Console","0","20 KB"
"System","4","Console","0","80 KB"
"smss.exe","404","Console","0","84 KB"
"csrss.exe","460","Console","0","1.828 KB"
"winlogon.exe","484","Console","0","1.812 KB"
"services.exe","528","Console","0","1.140 KB"
....

bien, ahora queda "secuestrar" los datos para poderlos idenitificar desde php y asi ver si un proceso está activo, vamos con un ejemplo:

Supongamos que yo quiero poner en mi web si tengo o no el SETI@home activo en mi maquina:

$seti = 0;
$fp=popen("tasklist /fo CSV /nh","r");
while (!feof($fp))
{
$lin=fgets($fp,255);
// Verificador de SETI@home
if (strtok($lin,",") == "\"SETI@home.exe\"" ) { $seti = 1; }
}
pclose($fp);
if ( $seti == 1 ) { echo "El SETI@home está funcionando y buscando hombrecillos verdes!"; }
else { echo "No tenemos el SETI@home activo en esta maquina"; }



en linux es exactamente igual, salvo cambiando un poco el if que identifica el proceso y los parametros de PS :)

Ale! suerte! espero que os sirva!

PHP-Hispano.net - Porque al final, todos acabamos aprendiendo.