Если вы последуете приведенному выше ответу, вы идете правильным путем. По крайней мере, в моем 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
согласно комментарию
grep -a -E "invokeSuperLambda execution time:[0-9]{2,}s" /root/.pm2/logs/proxy-out-1.log
где
-E
означает расширенное регулярное выражение [0-9]{2,}
2 или более обугливания 0
до обугливания9
Вы можете сделать это с помощью такого скрипта:
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}'
Предполагая, что строки продолжаются после «лямбда», как предлагает 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