Portál AbcLinuxu, 18. července 2025 19:39
top -b -n 1 | awk '/Cpu\(s\)/ {print $2}'nebo pouzit mpstat...
/proc/uptime
- první číslo je uptime systému v sekundách, druhé čas, po který procesor zahálel.
deb http://ftp.cz.debian.org/debian jessie main contrib non-free
/var/log/cpuload
. Mám to pro MRTG. Trochu jsem v tom hrabal, snad je to OK...
#include <stdio.h> #include <stdlib.h> #include <signal.h> #include <unistd.h> struct Cpustat { unsigned long u, n, s, i, w, x, y; }; void GetStat(Cpustat* pStat) { FILE* file = fopen("/proc/stat", "r"); fscanf(file, "cpu %Lu %Lu %Lu %Lu %Lu %Lu %Lu", &pStat->u, &pStat->n, &pStat->s, &pStat->i, &pStat->w, &pStat->x, &pStat->y); fclose(file); } void sigterm(int trm) // co delat pri SIGTERMu { unlink("/var/run/cpuload.pid"); unlink("/var/log/cpuload"); exit(0); } int main(void) { daemon(0,0); // po startu se urve od shellu signal(SIGTERM, sigterm); Cpustat before, now, diff; unsigned long total; float scale; FILE *mrtg, *pid; pid = fopen("/var/run/cpuload.pid", "w"); fputs(pid, getpid()); // zapisem si PID fclose(pid); for (;;) { GetStat(&before); sleep(300); // 5 minut = 300 GetStat(&now); diff.u = now.u - before.u; diff.n = now.n - before.n; diff.s = now.s - before.s; diff.i = now.i - before.i; diff.w = now.w - before.w; diff.x = now.x - before.x; diff.y = now.y - before.y; total = diff.u+diff.n+diff.s+diff.i+diff.w+diff.x+diff.y; scale = 100.0f / (float) total; mrtg = fopen("/var/log/cpuload", "w"); fprintf(mrtg, "%d\n", (int) 100-diff.i*scale); fclose(mrtg); } }
# m h dom mon dow command * * * * * /home/bob/cpuloadNo a pak už jen koukat jak přibývají řádky, třeba 'tail -fn50 /home/bob/zatez.txt' *********************************************
#!/usr/bin/php <\? function dtu() { $temp=explode(' ', microtime()); return date('d.m.Y G:i:s.', $temp[1]).substr($temp[0],2,6)." "; } function radek($n=1) { while ($n--) echo "\n"; } //********************************************************************************************************// //********************************************************************************************************// //*************************** MAIN ***********************************************************************// //********************************************************************************************************// //********************************************************************************************************// radek(); echo "prg='", $argv[0], "'\n"; echo "dir='", getcwd(), "'\n"; echo "arg='", $argv[1], "'\n"; for ($i=2; $i<10; $i++) if (strlen($argv[$i])) echo "arg".$i."='", $argv[$i], "'\n"; else break; radek(); $out=dtu(); $eregstr_load='load average: 0.([0-9]{2})'; $aa=exec("uptime"); if (!ereg($eregstr_load, $aa, $pom)) $out.="Nevidim zatez, nekde je chybka :))\n"; else $out.=sprintf("%2d%%\n", $pom[1]); echo $out; file_put_contents("/home/bob/zatezcpu.txt", $out, FILE_APPEND); \?>Fakt nevim jak sem dostat otazník bez \?, takže musíte ty backslashe na těch dvou místech vymazat. Jinak je to ok. Nemám rád html :)) Enjoy!
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.