Как выделить строку, у которой время выполнения больше X

Если вы последуете приведенному выше ответу, вы идете правильным путем. По крайней мере, в моем Debian Jessie я сделал программную ссылку на / usr / bin команды в пути / sbin. Например: / sbin / ifup, я помещаю программную ссылку (ln -s) на / usr / bin и могу ее использовать.

Еще одна важная вещь - задать NOPASSWD следующим образом:

User_Alias NET = goviedo
Cmnd_Alias ETH = /sbin/ifup
NET ALL = NOPASSWD:ETH
1
13.01.2019, 11:43
3 ответа

согласно комментарию

grep -a -E "invokeSuperLambda execution time:[0-9]{2,}s" /root/.pm2/logs/proxy-out-1.log

где

  • -Eозначает расширенное регулярное выражение
  • [0-9]{2,}2 или более обугливания 0до обугливания9
1
27.01.2020, 23:18

Вы можете сделать это с помощью такого скрипта:

TIMEX=10
awk -F\: -v timex=$TIMEX '{if (int($NF) > timex) print}' /root/.pm2/logs/proxy-out-1.log

Добавление скрипта grep выглядит примерно так:

TIMEX=10
grep -a "invokeSuperLambda execution time" /root/.pm2/logs/proxy-out-1.log|awk -F\: -v timex=$TIMEX '{if (int($NF) > timex) print}'
2
27.01.2020, 23:18

Предполагая, что строки продолжаются после «лямбда», как предлагает OP, эта команда должна работать:

gawk 'match($0, /execution\stime:([0-9]+)s/, a) && a[1] > 10 { print $0 }' logfile

с именем файла журнала (/root/.pm2/logs/proxy -out -1.log)

Это решение использует функцию matchдля записи времени выполнения в виде группы в скобках, а затем основывает числовое сравнение на захваченном значении, чтобы решить, следует ли печатать строку.

Более длинная, но более портативная версия:

awk 'match($0, /execution time:([0-9]+)s/) && substr($0, RSTART+15, RLENGTH-16 ) > 10 { print }' testfile
2
27.01.2020, 23:18

Теги

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