Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: Linux Forum Linux-Web.de. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

LinuxFan

Schüler

  • »LinuxFan« ist der Autor dieses Themas

Beiträge: 77

Wohnort: Bensheim

Beruf: Schüler

  • Nachricht senden

1

18.10.2004, 19:02

CPU Auslastung

Hi Leute,

nein bitte kein top!

Ich möchte ein Script bauen, dass mir, wenn die CPU Auslastung im Mittel von z.B. 5 Minuten über 80 % liegt, mir ne SMS schickt. Wie bekomme ich nun ein sauberes Parsing der CPU-Auslastung hin?

Gruß
LinuxFan
Victor-Phillip Negoescu
ViaThinkSoft Projektleiter


strcat

Unix Gladiator

  • »strcat« ist männlich

Beiträge: 2 331

Wohnort: /Earth/Germany/Bavaria/Regensburg

  • Nachricht senden

2

18.10.2004, 19:13

RE: CPU Auslastung

Zitat

Original von LinuxFan
Hi Leute,

nein bitte kein top!


Wieso nicht?

Zitat

Ich möchte ein Script bauen, dass mir, wenn die CPU Auslastung im Mittel von z.B. 5 Minuten über 80 % liegt, mir ne SMS schickt. Wie bekomme ich nun ein sauberes Parsing der CPU-Auslastung hin?


top(1) oder viel Spass beim Auswerten von /proc/stat
Christian 'strcat' Schneider <http://www.strcat.de/>
/* When all else fails, read the instructions. */

LinuxFan

Schüler

  • »LinuxFan« ist der Autor dieses Themas

Beiträge: 77

Wohnort: Bensheim

Beruf: Schüler

  • Nachricht senden

3

18.10.2004, 19:31

Dann sag mir, wie ich es mit top mache :)
Ich habe es mit cut versucht...
Z.B. top -b -n 5 | grep "CPU states" | cut -d " " -f 4 | tail -n 4
Z.B. top -b -n 5 | grep "CPU states" | cut -d " " -f 8 | tail -n 4
Z.B. top -b -n 5 | grep "CPU states" | cut -d " " -f 12 | tail -n 4
Z.B. top -b -n 5 | grep "CPU states" | cut -d " " -f 15 | tail -n 4
Aber das erscheint mir zu unsauber...
Victor-Phillip Negoescu
ViaThinkSoft Projektleiter


strcat

Unix Gladiator

  • »strcat« ist männlich

Beiträge: 2 331

Wohnort: /Earth/Germany/Bavaria/Regensburg

  • Nachricht senden

4

18.10.2004, 19:52

$ top -bn1d1 | grep "^Cpu" | awk '{print $2}'
(procps version 3.2.1)
oder halt mit der Zsh
$ print ${$(=top -bn1d1)[25]}
Christian 'strcat' Schneider <http://www.strcat.de/>
/* When all else fails, read the instructions. */

5

18.10.2004, 21:49

wenn man bedenkt, dass top sich seine Informationen auch nicht aus den Fingern saugt, kommt man auf den Befehl 'lsof|grep top' ... hier der Output:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
top       13159 michael  cwd    DIR        3,3    8192    4202466 /home/michael
top       13159 michael  rtd    DIR        3,3    4096          2 /
top       13159 michael  txt    REG        3,3   83200    5417664 /usr/bin/top
top       13159 michael  mem    REG        3,3  104484    2894313 /lib/ld-2.3.3.so
top       13159 michael  mem    REG        3,3  316410    2899059 /lib/libncurses.so.5.4
top       13159 michael  mem    REG        3,3 1349081    2894339 /lib/tls/libc.so.6
top       13159 michael    0u   CHR      136,1                  3 /dev/pts/1
top       13159 michael    1u   CHR      136,1                  3 /dev/pts/1
top       13159 michael    2u   CHR      136,1                  3 /dev/pts/1
top       13159 michael    3r   REG        0,3       0 4026531841 /proc/uptime
top       13159 michael    4r   REG        0,3       0 4026531840 /proc/loadavg
top       13159 michael    5r   REG        0,3       0 4026531853 /proc/stat
top       13159 michael    6r   REG        0,3       0 4026531842 /proc/meminfo

ich tippe mal auf /proc/stat, auch wenn ich die Zahlen ohne nachzuschlagen nicht wirklich zuordnen kann:

Quellcode

1
2
3
4
5
6
7
8
cpu  85652 3337 15675 1224793 41205 3245 3490
cpu0 85652 3337 15675 1224793 41205 3245 3490
intr 17390097 13775611 3964 0 3 3 0 5 0 2 0 0 0 152101 0 25762 17785 1980327 0 1202686 231841 0 0 3 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0
ctxt 12011161
btime 1098115219
processes 13187
procs_running 2
procs_blocked 0

Michael
Life is like ice cream: enjoy it before it melts!
"If there is (a God), all evidence indicates that He hates me." - Matt Groening

6

19.10.2004, 09:39

RE: CPU Auslastung

> Wie bekomme ich nun ein sauberes Parsing der CPU-Auslastung hin?

Schau dir mal sar aus dem sysstat Paket an. Vielleicht ist das ja was.

Gruss,
kp

LinuxFan

Schüler

  • »LinuxFan« ist der Autor dieses Themas

Beiträge: 77

Wohnort: Bensheim

Beruf: Schüler

  • Nachricht senden

7

26.10.2004, 22:12

Das hier habe ich gefunden: (funktioniert WUNDERBAR!)

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<?php

/**
* array getStat(string $_statPath)
*
* reads the /proc/stat file and parses out the pertinant information
*
* This function is meant to work in conjunction with getCpuUsage.  $_statPath should contain the
* path to stat (typicly /proc/stat)
*
* Returns an array of timings on success, false on failure
**/

function getStat($_statPath)
{
    if (trim($_statPath) == '')
    {
        $_statPath = '/proc/stat';
    }
    
    if (!is_readable($_statPath))
    {
        return false;
    }
    
    $stat = file($_statPath);
    
    if (substr($stat[0], 0, 3) == 'cpu')
    {
        $parts = explode(" ", preg_replace("!cpu +!", "", $stat[0]));
    }
    else
    {
        return false;
    }
    
    $return = array();
    $return['user'] = $parts[0];
    $return['nice'] = $parts[1];
    $return['system'] = $parts[2];
    $return['idle'] = $parts[3];
    return $return;
}

/**
* array getCpuUsage([string $_startpath])
*
* Returns an array of percentages representing the various CPU usage states
*
* The optional $_statPath variable should only be set if the stat file does not exist
* in /proc/stat
*
* Returns an array of percentages on success, terminates the script on failure
**/

function getCpuUsage($_statPath = '/proc/stat')
{
    $time1 = getStat($_statPath) or die("getCpuUsage(): couldn't access STAT path or STAT file invalid\n");
    sleep(1);
    $time2 = getStat($_statPath) or die("getCpuUsage(): couldn't access STAT path or STAT file invalid\n");

    $delta = array();

    foreach ($time1 as $k=>$v)
    {
        $delta[$k] = $time2[$k] - $v;
    }

    $deltaTotal = array_sum($delta);

    $percentages = array();

    foreach ($delta as $k=>$v)
    {
        $percentages[$k] = round($v / $deltaTotal * 100, 2);
    }
    return $percentages;
}

// output the structure of the resulting array
var_dump(getCpuUsage());

?>


Quelle: http://ben.liquidpulse.net/code/php/stat…_linux_systems/
Victor-Phillip Negoescu
ViaThinkSoft Projektleiter


Thema bewerten