Я в настоящее время распечатываю значения от vmstat стресс-тестов с помощью этого:
vmstat -a $INT $CNT | awk 'NR > 1 {print $13,$14,$15}'> vm.log_$D & sleep 5 && stress --vm $cores -t $seconds_to_run
Я думаю, что это могло бы быть более опрятно для распечатывания их в массивах, но когда я делаю, я всегда получаю синтаксическую ошибку {пропавшие без вести, даже когда нет. Как я могу преобразовать это для печати значений столбца 13$, 14$, 15$ посредством использования массивов, а не пути выше?
Вывод обоих должен быть тем же, но я чувствую, что массивы выглядят более опрятными с точки зрения вывода.
avg-cpu: %user %nice %system %iowait %steal %idle
17.74 1.77 31.43 25.05 0.00 24.02
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 51.97 1349.36 32.86 392947 9568
avg-cpu: %user %nice %system %iowait %steal %idle
9.18 78.57 12.24 0.00 0.00 0.00
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 2.04 12.24 0.00 12 0
Я хотел бы за то, когда я выполняю его, чтобы только столбцы процента были распечатаны, не чтения Кбита.
РЕДАКТИРОВАНИЕ **********************************
SAR-D вывод-I хотел бы, чтобы подходящая команда работала вместе с напряжением - HDD, но это - вывод, который дает sar-D 1 10.
4296roryhbmc
1944 rootal,
3361 root
Tasks: 326total,
Cpu(s):25.7%us,54.1%sy,
Mem:2041916k
Swap:1046524kt 0 | 0 0 | 0 0 | 268 957
34 17 49 0 0 0| 0 0 | 0 0 | 0 0 | 279 679
49 31 21 0 0 0| 0 0 | 0 0 | 0 0 | 334 1874
4 6 90 0 0 0| 0 0 | 0 0 | 0 0 | 109 131
28 16 55 1 0 0| 0 4096B| 0 0 | 0 0 | 304 575
42 33 26 0 0 0| 20k 428k| 0 0 | 0 0 | 392 1343
4 10 86 0 0 0| 0 0 | 0 0 | 0 0 | 81 124
8 12 57 22 0 0| 0 0 | 0 0 | 0 0 | 113 193
2 9 66 22 0 0| 0 0 | 0 0 | 0 0 | 74 126
4 12 84 0 0 0| 0 0 | 0 0 | 0 0 | 92 140
8 21 54 17 0 0| 0 0 | 0 0 | 0 0 | 129 286
7 11 48 33 0
*******************************
* Choose from the following: *
*******************************
* [1] Stress the CPU. *
* [2] Stress the Memory(RAM). *
* [3] Stress the disk drive. *
* [4] Stress the hard disk drive. *
Press A to quit.
************************
Enter your menu choice [1-4]:
Как я могу отредактировать его так, это только покажет это?
$ sar -d
SunOS unknown 5.10 Generic_118822-23 sun4u 01/22/2006
00:00:01 device %busy avque r+w/s blks/s avwait avserv
. cut ...
14:00:02 dad0 31 0.6 78 16102 1.9 5.3
dad0,c 0 0.0 0 0 0.0 0.0
dad0,h 31 0.6 78 16102 1.9 5.3
dad1 0 0.0 0 1 1.6 1.3
dad1,a 0 0.0 0 1 1.6 1.3
dad1,b 0 0.0 0 0 0.0 0.0
dad1,c 0 0.0 0 0 0.0 0.0
источник: http://www.ibm.com/developerworks/aix/library/au-unix-perfmonsar.html
Это действительно не имеет никакого отношения, хранятся ли данные в awk использование массива или нет.
Как упомянуто @muru, можно переформатировать данные в столбцы с помощью column
команда
awk 'NR > 1 {print $13,$14,$15}' | column -t
С другой стороны, просто собственный выходной разделитель полей awk набора к ВКЛАДКЕ вместо пространства непосредственно
awk 'NR > 1 {OFS="\t"; print $13,$14,$15}'
Для более сложных требований форматирования Вы могли заменить print
оператор a printf
, который позволил бы Вам указывать ширину поля явно, например.
awk 'NR > 1 {printf "%4s%8s%8s\n",$13,$14,$15}'
Для Вашего iostat
требование, первая вещь отметить состоит в том, что можно ограничить iostat
вывод только к Отчету о загрузке ЦП (опускающий Отчет об Использовании Устройства) путем добавления -c
переключатель командной строки, например.
iostat -c 1 10
Кроме того, если Вы хотите пропустить повторный пробел и строки заголовка, Вы могли бы сделать что-то как
iostat -c 1 5 | awk '/^$/ || /^avg-cpu:/ {next}; {print}'
Linux 3.13.0-45-generic (T61p) 15-03-02 _x86_64_ (2 CPU)
11.11 0.04 2.67 0.14 0.00 86.04
2.53 0.00 1.01 0.00 0.00 96.46
4.46 0.00 1.49 0.00 0.00 94.06
2.99 0.00 1.00 0.50 0.00 95.52
3.02 0.00 0.50 0.00 0.00 96.48
или Вы могли сделать что-то более необычное для печати только первого %
заголовок:
$ iostat -c 1 5 | awk '/^$/ || (/^avg-cpu:/ && a) {next}; NR>1 {a=1;print}'
avg-cpu: %user %nice %system %iowait %steal %idle
11.11 0.04 2.67 0.14 0.00 86.04
2.02 0.00 0.51 0.00 0.00 97.47
4.04 0.00 0.51 0.00 0.00 95.45
2.50 0.00 1.00 0.00 0.00 96.50
3.02 0.00 1.01 0.00 0.00 95.98