восстановите удаленную команду после удаления в ударе

Linux

В Linux, эта информация доступна в/proc файловой системе. Я не большой поклонник используемого формата текстового файла, поскольку каждый дистрибутив Linux, кажется, настраивает по крайней мере один важный файл. Беглый взгляд как источник к 'PS' показывает путаницу.

, Но вот то, где найти информацию, Вы ищете:

/proc/meminfo содержит большинство информации в масштабе всей системы, которую Вы ищете. Здесь это похоже в моей системе; я думаю, что Вы интересуетесь [1 131] MemTotal, MemFree, SwapTotal, и SwapFree:

Anderson cxc # more /proc/meminfo
MemTotal:      4083948 kB
MemFree:       2198520 kB
Buffers:         82080 kB
Cached:        1141460 kB
SwapCached:          0 kB
Active:        1137960 kB
Inactive:       608588 kB
HighTotal:     3276672 kB
HighFree:      1607744 kB
LowTotal:       807276 kB
LowFree:        590776 kB
SwapTotal:     2096440 kB
SwapFree:      2096440 kB
Dirty:              32 kB
Writeback:           0 kB
AnonPages:      523252 kB
Mapped:          93560 kB
Slab:            52880 kB
SReclaimable:    24652 kB
SUnreclaim:      28228 kB
PageTables:       2284 kB
NFS_Unstable:        0 kB
Bounce:              0 kB
CommitLimit:   4138412 kB
Committed_AS:  1845072 kB
VmallocTotal:   118776 kB
VmallocUsed:      3964 kB
VmallocChunk:   112860 kB
HugePages_Total:     0
HugePages_Free:      0
HugePages_Rsvd:      0
Hugepagesize:     2048 kB

Для загрузки ЦП, необходимо сделать немного работы. Linux делает доступным полная загрузка ЦП, так как система запускается; это, вероятно, не то, чем Вы интересуетесь. Если Вы хотите знать то, чем загрузка ЦП была в течение прошлой секунды, или 10 секунд, то необходимо запросить информацию и вычислить ее сами.

информация доступна в [1 135]/proc/stat, который документируется вполне прилично в http://www.linuxhowtos.org/System/procstat.htm ; вот то, на что это похоже на моем поле с 4 ядрами:

Anderson cxc #  more /proc/stat
cpu  2329889 0 2364567 1063530460 9034 9463 96111 0
cpu0 572526 0 636532 265864398 2928 1621 6899 0
cpu1 590441 0 531079 265949732 4763 351 8522 0
cpu2 562983 0 645163 265796890 682 7490 71650 0
cpu3 603938 0 551790 265919440 660 0 9040 0
intr 37124247
ctxt 50795173133
btime 1218807985
processes 116889
procs_running 1
procs_blocked 0

Первый, необходимо определить, сколько центральных процессоров (или процессоры или ядра обработки) доступно в системе. Чтобы сделать это, считайте количество 'cpuN' записей, где N запускается в 0 и инкременты. Не считайте строку 'CPU', которая является комбинацией cpuN строк. В моем примере Вы видите cpu0 через cpu3 для в общей сложности 4 процессоров. С этого времени можно проигнорировать cpu0.. cpu3 и внимание только на строку 'CPU'.

Затем, необходимо знать, что четвертое число в этих строках является мерой времени простоя, и таким образом четвертое число на строке 'CPU' является общим временем простоя для всех процессоров со времени начальной загрузки. Это время измеряется в Linux "миг", который является 1/100 секунды каждый.

, Но Вы не заботитесь в общее время простоя; Вы заботитесь во время простоя в установленный срок, например, в последнюю секунду. Действительно вычислите, что, необходимо считать этот файл дважды, 1 секунда независимо. Тогда можно сделать разность четвертого значения строки. Например, если Вы берете образец и добираетесь:

cpu  2330047 0 2365006 1063853632 9035 9463 96114 0

Тогда одну секунду спустя Вы получаете этот образец:

cpu  2330047 0 2365007 1063854028 9035 9463 96114 0

Вычитают эти два числа, и Вы получаете разность 396, что означает, что Ваш ЦП был неактивен в течение 3,96 секунд из прошлых 1,00 секунд. Прием, конечно, то, что необходимо разделиться на количество процессоров. 3.96 / 4 = 0.99, и существует Ваш неактивный процент; неактивных 99%, и занятый 1%.

В моем коде, у меня есть кольцевой буфер 360 записей, и я читал этот файл каждую секунду. Это позволяет мне быстро вычислить загрузку ЦП на 1 секунду, 10 секунд, и т.д., полностью до 1 часа.

Для определенной для процесса информации, необходимо посмотреть в [1 136]/proc/pid; если Вы не заботитесь, примыкают к Вашему изодромному с предварением, можно посмотреть в/proc/self.

ЦП, используемый Вашим процессом, доступен в [1 137]/proc/self/stat. Это - нечетно выглядящий файл, состоящий из одной строки; например:

19340 (whatever) S 19115 19115 3084 34816 19115 4202752 118200 607 0 0 770 384 2
 7 20 0 77 0 266764385 692477952 105074 4294967295 134512640 146462952 321468364
8 3214683328 4294960144 0 2147221247 268439552 1276 4294967295 0 0 17 0 0 0 0

важные данные здесь являются 13-ми и 14-ми маркерами (0 и 770 здесь). 13-й маркер является количеством мига, который процесс выполнил в непривилегированном режиме, и 14-м является количество мига, который процесс выполнил в привилегированном режиме. Добавьте два вместе, и у Вас есть его суммарное использование ЦП.

Снова, необходимо будет периодически выбирать этот файл и вычислять разность для определения использования ЦП процесса со временем.

Редактирование: помнят, что при вычислении загрузки ЦП процесса необходимо принять во внимание 1) количество потоков в процессе и 2) количество процессоров в системе. Например, если Ваш однопоточный процесс использует только 25% ЦП, который мог бы быть хорошим или плохим. Хороший в однопроцессорной системе, но плохо в системе с 4 процессорами; это означает, что Ваш процесс работает постоянно и использует 100% циклов ЦП, доступных ему.

Для определенной для процесса информации о памяти, Вы ahve для рассмотрения/proc/self/status, который похож на это:

Name:   whatever
State:  S (sleeping)
Tgid:   19340
Pid:    19340
PPid:   19115
TracerPid:      0
Uid:    0       0       0       0
Gid:    0       0       0       0
FDSize: 256
Groups: 0 1 2 3 4 6 10 11 20 26 27
VmPeak:   676252 kB
VmSize:   651352 kB
VmLck:         0 kB
VmHWM:    420300 kB
VmRSS:    420296 kB
VmData:   581028 kB
VmStk:       112 kB
VmExe:     11672 kB
VmLib:     76608 kB
VmPTE:      1244 kB
Threads:        77
SigQ:   0/36864
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: fffffffe7ffbfeff
SigIgn: 0000000010001000
SigCgt: 20000001800004fc
CapInh: 0000000000000000
CapPrm: 00000000ffffffff
CapEff: 00000000fffffeff
Cpus_allowed:   0f
Mems_allowed:   1
voluntary_ctxt_switches:        6518
nonvoluntary_ctxt_switches:     6598

записи, которые запускаются с 'Vm', являются интересными:

  • VmPeak является пространством максимальной виртуальной памяти, использованным процессом в КБ (1 024 байта).
  • VmSize является текущим пространством виртуальной памяти, используемым процессом в КБ. В моем примере это является довольно большим: 651 352 КБ или приблизительно 636 мегабайтов.
  • VmRss является объемом памяти, которые были отображены в адресное пространство процесса или его размер резидентного набора. Это существенно меньше (420 296 КБ или приблизительно 410 мегабайтов). Различие: моя программа отобразила 636 МБ через mmap (), но только получила доступ к 410 МБ из него, и таким образом только 410 МБ страниц были присвоены ему.

единственный объект, в котором я не уверен, Область подкачки, в настоящее время используемая моим процессом . Я не знаю, доступно ли это.

7
задан Community 23 May 2017 в 11:47
поделиться

1 ответ

Для отмены используйте

  • Ctrl + X , Ctrl + U ; или
  • Ctrl + _ (подчеркивание).

См. bind -P для получения полного списка привязок клавиш в bash .

]
10
ответ дан 7 December 2019 в 01:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: