Страница 1 из 2
Majordomo и Linux
Добавлено: Вс ноя 29, 2015 11:56 am
Amarok
Переезжаю (медленно, но верно) на linux. Вопрос:
в этом руководстве есть такие строки
Код: Выделить всё
sudo apt-get install lm-sensors (пакет для мониторинга температуры системы, частоты вращения кулеров ...)
sudo apt-get install hddtemp (пакет для мониторинга температуры жесткого диска)
А как значения сенсоров из hddtemp и lm-sensors передать в Алису?
Re: Majordomo и Linux
Добавлено: Вс ноя 29, 2015 5:45 pm
Anton_kulibin
У меня вот этим сценарием, то что закоменчено, почему то передавало не верные значения, возможно у Вас будет работать.
Код: Выделить всё
/*exec("sensors",$asensors);
$temp=0;
for($i=0;$i<count($asensors);$i++) {
ereg("[^:]*\:[ ]*([0-9+-.]*)",$asensors[$i],$arr);
$temp = trim($arr[1]);
$temp = str_replace('+','',$temp);
switch (substr($asensors[$i],0,5)) {
case 'fan1:':
sg('system_fan1',$temp);
break;
case 'Core0 Temp:':
sg('system_temp1',$temp);
break;
case 'temp1':
sg('system_temp3',$temp);
break;
case 'M/B T':
sg('system_mbtemp',$temp);
break;
};
};*/
$temp=shell_exec("sensors");
ereg("Core0 Temp[^:]*\:[ ]*([0-9+-.]*)",$temp,$arr);
$temp = trim($arr[1]);
$temp = str_replace('+','',$temp);
sg('system_temp1',$temp);
$temp=exec("sudo hddtemp /dev/sda1");
ereg("[^:]*\:[ ]*[^:]*\:[ ]*([0-9+-.]*)",$temp,$arr);
$temp = trim($arr[1]);
$temp = str_replace('+','',$temp);
sg('system_hdd1temp',$temp);
$data = shell_exec('uptime');
$uptime = explode(' up ', $data);
$uptime = explode(',', $uptime[1]);
sg('system_uptime',trim($uptime[0]));
$bytes = disk_free_space(".");
$si_prefix = array( 'B', 'KB', 'MB', 'GB', 'TB', 'EB', 'ZB', 'YB' );
$base = 1024;
$class = min((int)log($bytes , $base) , count($si_prefix) - 1);
$temp = round($bytes / pow($base,$class)) . ' ' . $si_prefix[$class];
sg('system_freespace',$temp);
Re: Majordomo и Linux
Добавлено: Ср дек 02, 2015 5:30 am
savenko_egor
Я тоже делал через "exec". Например температура:
Код: Выделить всё
$temp = exec('sensors | grep Core | awk \'{print $3}\' | cut -c 2-5');
setGlobal('ThisComputer.Temp',$temp);
Свободная память:
Код: Выделить всё
$mem = exec('free -m | grep Mem: | awk \'{print $4}\'');
setGlobal('ThisComputer.MEM',$mem);
Загрузка процессора в процентах:
Код: Выделить всё
exec('ps -aux', $processes);
foreach($processes as $process)
{
$cols = split(' ', ereg_replace(' +', ' ', $process));
if (strpos($cols[2], '.') > -1)
{
$cpuUsage += floatval($cols[2]);
}
}
setGlobal('ThisComputer.CPU_Load',$cpuUsage);
Это в сценарии который вызывается curl-ом по cron-у каждую секунду. Костыли вроде, но работают
hddtemp по идее должен так работать:
Результат:
Код: Выделить всё
user@supsl3:~$ hddtemp /dev/sda | awk '{print $3}'
32°C
Прошу заметить что у Вас сразу может не заработать. Скорее всего проблема будет в том, что у пользователя от которого выполняется веб-сервер не будет прав. Исправляется добавлением пользователя в необходимую группу.
Re: Majordomo и Linux
Добавлено: Ср дек 02, 2015 12:42 pm
Amarok
Всем - спасибо! В итоге код стал такой у меня:
Код: Выделить всё
//CPU temp
$cpu_temp=exec('cat /sys/devices/platform/coretemp.0/hwmon/hwmon1/temp2_input') / 1000;
$cpu_temp=round($cpu_temp,1);
//CPU usage
$cpu_usage=exec("top -bn 1 | awk '{print $9}' | tail -n +8 | awk '{s+=$1} END {print s}'");
//System uptime
$sys_uptime=exec('uptime');
$sys_uptime = explode(' up ', $sys_uptime);
$sys_uptime = explode(',', $sys_uptime[1]);
$sys_uptime = trim($sys_uptime[0]);
//Memory usage/total
$mem_total=exec("cat /proc/meminfo | grep MemTotal | awk '{print $2}'");
$mem_usage=$mem_total - exec("cat /proc/meminfo | grep MemFree | awk '{print $2}'");
$sys_memory=$mem_usage . " / " . $mem_total;
//HDD /dev/sda temp
$hdd_temp=exec("hddtemp /dev/sda");
ereg("[^:]*\:[ ]*[^:]*\:[ ]*([0-9+-.]*)",$hdd_temp,$arr);
$hdd_temp = trim($arr[1]);
$hdd_temp = str_replace('+','',$hdd_temp);
//HDD free space
$hdd_freespace=exec("df -h | grep /dev/sda1 | awk '{print $4}'");
if(gg('SysUptime')!=$sys_uptime){sg("SysUptime",$sys_uptime);}
if(gg('SysMemUsed')!=$mem_usage){sg("SysMemUsed",$mem_usage);}
if(gg('SysMemTotal')!=$mem_total){sg("SysMemTotal",$mem_total);}
if(gg('HDDFree')!=$hdd_freespace){sg("HDDFree",$hdd_freespace);}
if(gg('HDDtemp')!=$hdd_temp){sg("HDDtemp",$hdd_temp);}
if(gg('CPUtemp')!=$cpu_temp){sg("CPUtemp",$cpu_temp);}
if(gg('CPUusage')!=$cpu_usage){sg("CPUusage",$cpu_usage);}
Re: Majordomo и Linux
Добавлено: Вт апр 26, 2016 5:15 pm
Alexiy2
Господа! Доброго времени суток!
Проблема такого рода:
имеется жесткий объемом 3Тб, smartctl в debian показывает правильный его объем, а вот команда df -h говорит, что диск имеет всего 2Тб.
Что это может быть и как с этим бороться? Файловая система на диске ext4
Re: Majordomo и Linux
Добавлено: Вт апр 26, 2016 9:30 pm
coolermister
Это возможно, если диск размечен в стандартный MBR. MBR не поддерживает разделы более 2тб. Вам нужно диск переразметить в GPT, и пересоздать раздел, тогда увидит. Не скажу как сделать это под линуксом, у меня на серверах с линуксом нет таких здоровых дисков) А под виндой - любым софтом для разметки дисков. Paragon Hard Disk Manager к примеру.
Re: Majordomo и Linux
Добавлено: Ср янв 04, 2017 5:31 pm
C_3AXAPOB
Подскажите почему не работает выделенная жирным часть:
$cpu_temp=exec("cat /sys/devices/platform/coretemp.0/hwmon/hwmon1/temp2_input") / 1000 $cpu_temp=round($cpu_temp,1);
setGlobal('ThisComputer.CpuTemp',$cpu_temp);
Re: Majordomo и Linux
Добавлено: Ср янв 04, 2017 5:47 pm
SolarW
C_3AXAPOB писал(а):Подскажите почему не работает выделенная жирным часть:
Прав на чтение данного файла нет у того пользователя системы от которого стартует exec?
Re: Majordomo и Linux
Добавлено: Ср янв 04, 2017 6:30 pm
C_3AXAPOB
Как поправить?
Отправлено с моего iPhone используя Tapatalk
Re: Majordomo и Linux
Добавлено: Ср янв 04, 2017 11:58 pm
SolarW
C_3AXAPOB писал(а):Как поправить?
Для начала посмотреть наличие файла и что у него с правами:
Код: Выделить всё
ls -l /sys/devices/platform/coretemp.0/hwmon/hwmon1/temp2_input