Получаем сведения о системе из /proc и /sys

 

 

/proc/uptime - Uptime и простой (Idle)

cat /proc/uptime

Получаем:

17026202.94 135823050.06

Первое число - uptime абсолютное значение в секундах, второе - время простоя с секундах для всех ядер. 
Т.е. чтобы посчитать время простоя, нужно поделить результат на кол-во ядер.

/proc/stat - Загрузка ЦПУ

Для того, чтобы получить загрузку процессора в процентах за интервал времени нужно:
Считывать первые 4 числа из первой строки /proc/stat (для конкретного ядра читаем соотвествующую строку начинающуюся с cpu[номер]:

cat /proc/stat
 
Пример выполнения cat /proc/stat
cpu  31085701 0 3091028 13579083968 1380884 220 26696 1298948 0 0
cpu0 3190446 0 408669 1696799095 1083898 214 19356 377300 0 0
cpu1 5903378 0 576443 1694968516 181946 4 4403 183745 0 0
cpu2 5252583 0 427988 1695859527 39980 0 866 156003 0 0
cpu3 4258476 0 394110 1696992052 22731 0 882 138313 0 0
cpu4 3543939 0 341801 1698103798 17814 0 424 118064 0 0
cpu5 2974831 0 316912 1698759640 12997 0 285 112461 0 0
cpu6 3184640 0 318864 1698584900 11388 0 235 106158 0 0
cpu7 2777406 0 306239 1699016438 10128 0 242 106900 0 0
intr 4165703957 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 188225334 113866310 40379 0 669605 48 141976807 310411662 269366 0 356533 0 113955605 322013237 275433 0 760419 0 94526262 291942710 266165 0 908409 0 99256402 138686295 244813 0 729715 0 96566673 111680520 231890 0 689766 0 90473091 101512670 237014 0 671585 0 88921263 96209370 233934 0 734099 0 8446691 21 70476570 6350793 7412751 110052389 7672601 1192708 7124922 1187089 7033720 1208938 7848635 1183356 7811966 1310469 8083981 1172975 7290711 1203332 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 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 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 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 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
ctxt 4845411403
btime 1502462051
processes 6876027
procs_running 1
procs_blocked 0
softirq 807367055 0 250033600 55209810 118549413 0 0 4817722 149523484 241389 228991637

 


Получаем U0 - cpu, N0 - nice, S0 - system, I0 - idle
Через заданный интервал времени(например 1с) повторяем чтение и получаем U1, N1, S1, I1
Вычисляем разности:

Ud = U1 – U0
Nd = N1 – N0
Sd = S1 – S0
Id = I1 – I0

Вычисляем сумму разностей:

Total = Ud + Nd + Sd + Id

Средняя загрузка за интервал времени:

avg_load = 100% * (Ud + Nd + Sd)/Total

 

/proc/loadavg - Load Average

cat /proc/loadavg
1.46 1.26 0.84 2/154 7484

Три первые значения представляют собой среднюю загрузку за последние 1, 5 и 15 минут.

Четвертое поле состоит из двух чисел, разделенных слешем: число перед слешем показывает количество выполняемых в данный момент процессов; число после слеша показывает общее количество процессов в системе на данный момент.

Пятое поле показывает последний PID (идентификатор процесса), выделенных системой.

 

/proc/meminfo - Информация по памяти

cat /proc/meminfo
MemTotal:           8230152 kB
MemFree:            1463560 kB
MemAvailable:       7291316 kB
Buffers:             521448 kB
Cached:             5272548 kB
SwapCached:            5984 kB
Active:             6102384 kB
Inactive:            261256 kB
Active(anon):        566268 kB
Inactive(anon):      240296 kB
Active(file):       5536116 kB
Inactive(file):       20960 kB
Unevictable:              0 kB
Mlocked:                  0 kB
SwapTotal:           392188 kB
SwapFree:            320192 kB
Dirty:                   84 kB
Writeback:                0 kB
AnonPages:           564036 kB
Mapped:               76872 kB
Shmem:               236920 kB
Slab:                351448 kB
SReclaimable:        313676 kB
SUnreclaim:           37772 kB
KernelStack:           3184 kB
PageTables:            7792 kB
NFS_Unstable:             0 kB
Bounce:                   0 kB
WritebackTmp:             0 kB
CommitLimit:        4507264 kB
Committed_AS:       1682180 kB
VmallocTotal:   34359738367 kB
VmallocUsed:          20880 kB
VmallocChunk:   34359655367 kB
HardwareCorrupted:        0 kB
AnonHugePages:            0 kB
DirectMap4k:        8388608 kB
DirectMap2M:              0 kB

 

/proc/net/dev - Информация по сети

cat /proc/net/dev
Inter-|   Receive                                                |  Transmit
 face |bytes    packets errs drop fifo frame compressed multicast|bytes    packets errs drop fifo colls carrier compressed
  eth0: 3891211574 44053703    0    0    0     0          0       0 22249901768 43623500    0    0    0     0       0          0
  eth1:          0        0    0    0    0     0          0       0           0        0    0    0    0     0       0          0
    lo:    5715737    54833    0    0    0     0          0       0     5715737    54833    0    0    0     0       0          0

 

/sys/class/hwmon/hwmon0/device/hwmon/hwmon0/temp1_input - Температура CPU

cat /sys/class/hwmon/hwmon0/device/hwmon/hwmon0/temp1_input
61000

В данном случае температура 61 °С

Теги: Linux, CLI

Комментарии (0)