LINUX.ORG.RU

PHP + системный монитор.


0

1

Можно ли заставить вывести php системное состояние, к примеру как Conky. Конечно можно и вручную запускать я так сделал «df -h» что бы узнать сколько место на диске. Но есть же наверно путь легче? Ну или если нет, то как мне вывести скажем тот df более красиво в процентах например как то так:

Sda1 - 58%
[||||||||      ]  /* это типо прогрес бар что ли*/[br]
23.2 Gb from 40 gb


а то не очень аккуратно выглядит то что у меня

Filesystem Size Used Avail Use% Mounted on
/dev/sda1 2.9G 1.8G 954M 66% /



Последнее исправление: Serpico (всего исправлений: 2)

$co=wtf(«command»);

?> <pre> $co </pre>

anonymous
()
Ответ на: комментарий от OramahMaalhur

Это только с жестким, а мне бы еще, нагруженость процессора, забитость оперативной памяти или если можно скорость Ethernet. Вообщем как Conky только я это потом запихну в PHP.

Serpico
() автор топика
Ответ на: комментарий от Serpico

Аналогично можешь распарсить и выхлоп команды uptime. preg_match_all - это функция PHP. Почитай про регулярные выражения, что-ли.

OramahMaalhur
()
Ответ на: комментарий от Serpico

А дошло это php, только я не понял как делать
у меня вот $hdd[1] выдает результат:

/dev/sda1 2.9G 1.8G 940M 66% /
а preg_match_all как пользоваться я не понял

Serpico
() автор топика
Ответ на: комментарий от Serpico

а КАК ты их собираешься выдирать?

<?php

$buf = exec("df -h");
echo $buf;
preg_match_all("!/dev/(\w+)\s*([^\s]+)\s*([^\s]+)\s*([^\s]+)\s*([^\s]+)!i", $buf, $r, PREG_PATTERN_ORDER);
print_r($r);
?>

так лучше

OramahMaalhur
()
Ответ на: комментарий от Serpico

> блин это сложно (

забавно, мы регулярки на первом курсе изучали

stevejobs ★★★★☆
()

Сервер Гриша!!! You made my day =))

boombick ★★★★★
()
Ответ на: комментарий от OramahMaalhur

Неа не лучше, вышло что то несуразное

tmpfs 156M 0 156M 0% /dev/shmArray ( [0] => Array ( ) [1] => Array ( ) [2] => Array ( ) [3] => Array ( ) [4] => Array ( ) [5] => Array ( ) )
придется просто работать со строкой копируя символы

Serpico
() автор топика
Ответ на: комментарий от OramahMaalhur

я бы таки уточнил

<?php

$buf = exec("df -h");
echo $buf;
preg_match_all("!/dev/(\w+)\s+([^\s]+)\s+([^\s]+)\s+([^\s]+)\s+([^\s]+)!si", $buf, $r, PREG_PATTERN_ORDER);
print_r($r);
?>
AndreyKl ★★★★★
()
Ответ на: комментарий от AndreyKl

ну я не знаю у меня то он почему то выводит вот это

tmpfs 156M 0 156M 0% /dev/shmArray ( [0] => Array ( ) [1] => Array ( ) [2] => Array ( ) [3] => Array ( ) [4] => Array ( ) [5] => Array ( ) )

это вооще кстати 2 строка из df -h мне надо первую

Serpico
() автор топика
Ответ на: комментарий от Serpico

ах.. тебе надо вот так

tmpfs 156M 0 156M 0% /dev/shm

preg_match_all("!(\w+)\s+([^\s]+)\s+([^\s]+)\s+([^\s]+)\s+([^\s]+)!si", $buf, $r, PREG_PATTERN_ORDER);
AndreyKl ★★★★★
()
Ответ на: комментарий от AndreyKl

df -h:

Файловая система      Разм  Исп  Дост  Исп% смонтирована на
/dev/sda1             2,9G  1,8G  944M  66% /
tmpfs                 156M     0  156M   0% /lib/init/rw
udev                  152M  160K  152M   1% /dev
tmpfs                 156M     0  156M   0% /dev/shm

мне надо здесь 2 строку, ну в php это первая (там же счет с нуля идет), то бишь это :
/dev/sda1 2,9G 1,8G 944M 66% /

Serpico
() автор топика

ТС для этих целей есть munin.

к нему можно написать свои скриптики. неосилишь, стучи, за печеньки напишу.

MikeDM ★★★★★
()
Ответ на: комментарий от Serpico

лови

<?php
exec("df -h", $buf);
echo implode($buf);
preg_match_all("!/dev/(\w+)\s+([^\s]+)\s+([^\s]+)\s+([^\s]+)\s+([^\s]+)!si", implode($buf), $r, PREG_PATTERN_ORDER);
print_r($r);
?>
AndreyKl ★★★★★
()
Ответ на: комментарий от AndreyKl

о это уже лучше выглядит, ну это может наглешь уже только эти значения отдельно по числу в массив запихнуть?
вот так делаю только ерунда получается:
$ar[39]=$r[1]
ну меня просто в этом массиве много чего и по порядку в цикле выводит

Serpico
() автор топика
Ответ на: комментарий от Serpico

отдай только вторую строчку парсеру, вроде бы вот так

 
preg_match_all("!/dev/(\w+)\s+([^\s]+)\s+([^\s]+)\s+([^\s]+)\s+([^\s]+)!si", $buf[1], $r, PREG_PATTERN_ORDER); 
AndreyKl ★★★★★
()
Ответ на: комментарий от AndreyKl

Сделал я намного легче:

$stack = array();
exec ("df -h", $ping);
echo $ping[1];
$str=$ping[1];
$tok = strtok($str, " ");
while ($tok) {
//    echo "$tok<br />";
    array_push($stack, $tok);
    $tok = strtok(" ");
}

echo $stack[1];
echo $stack[2];
echo $stack[3];
Навыдумавали конечно!

Serpico
() автор топика
Ответ на: комментарий от AndreyKl

Зато понятнее. Ладно решил раз уже.

... кстати а какая команда покажет сколько оперативной памяти забито?

Serpico
() автор топика
Ответ на: комментарий от AndreyKl

А таки ДА, я сделал это. всем спасибо помогли прознать всю суть теории мировоздания. Конечно что бы всё это изучать нужна голова, осмысления как это работает, а ну да и Волосатые руки, куда же без них.
Вообщем получилось нечто ЭТО: Скрин

Serpico
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.