Как определить процент использования ЦП пользователем из вывода команды sa?

Tu problema tiene que ver con la codicia de .*. Todavía puedes hacerlo en sed, pero es más fácil con Perl:

$ echo 'range 1.1.1.10 1.1.1.100;' | perl -ne 'printf("IP range is %d-%d\n", (/\.(\d+)[^.]/g))'
IP range is 10-100

El script de Perl compara los números al final de las direcciones IP y los devuelve como dos números enteros que se usan en printf()para imprimir la cadena de salida formateada.

La expresión regular de Perl

/\.(\d+)[^.]/g

capturará cada conjunto de dígitos precedidos por un punto, pero no seguidos por un punto.


En sedrealmente no tienes que hacer la sustitución de una sola vez:

$ echo 'range 1.1.1.10 1.1.1.100;' | sed -E -e 's/[^ ]*\.([0-9]+);/\1/'
range 1.1.1.10 100

$ echo 'range 1.1.1.10 1.1.1.100;' | sed -E -e 's/[^ ]*\.([0-9]+);/\1/' -e 's/[^ ]*\.([0-9]+) /\1-/'
range 10-100

$ echo 'range 1.1.1.10 1.1.1.100;' | sed -E -e 's/[^ ]*\.([0-9]+);/\1/' -e 's/[^ ]*\.([0-9]+) /\1-/' -e 's/range/IP & is/'
IP range is 10-100

El guión final sed:

s/[^ ]*\.([0-9]+);/\1/;   # Isolate last number in range
s/[^ ]*\.([0-9]+) /\1-/;  # Isolate first number in range, add dash
s/range/IP & is/;         # Sort out text at start

Que, después de la inspección, se puede reducir a

s/[^ ]*\.([0-9]+)[^.]/-\1/g
s/range -/IP range is /

Eso es

$ echo 'range 1.1.1.10 1.1.1.100;' | sed -E -e 's/[^ ]*\.([0-9]+)[^.]/-\1/g' -e 's/range -/IP range is /'
IP range is 10-100
0
19.08.2017, 06:29
1 ответ

Я могу предложить вам альтернативный способ. И это через пакет systat(ссылка для арки), и он предоставляет команды как mpstat, iostatи многие другие.

Вывод mpstat:

Linux 4.9.43-1-lts (laptop)     18/08/2017  _x86_64_    (4 CPU)

19:51:50     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
19:51:50     all    2,18    0,03    0,58    0,07    0,00    0,02    0,00    0,00    0,00   97,13

Вывод iostat:

Linux 4.9.43-1-lts (laptop)     18/08/2017  _x86_64_    (4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           2,18    0,03    0,60    0,07    0,00   97,13

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               3,13        28,15        80,47    1029654    2943525
0
28.01.2020, 04:41

Теги

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