мониторинг syslog и строки печати без `pattern`

Ваш файл пуст, потому что процесс прерван до того, как файл будет записан на диск. Так работает перенаправление. В качестве обходного пути попробуйте следующее:

script -c 'cat /dev/urandom|hexdump|grep -i "ffff f"' -f random

Это будет в основном записывать весь экранный файл в файл.

2
задан 27 June 2017 в 17:21

3 ответа

Проблема с вашим watch -n 1 tail -n 15 /var/log/syslog | grep -v -E 'pattern1|pattern2', я думаю, заключается в том, что он запускает tail -n 15 /var/log/syslog внутри watch, а затем передает результат на grep. Это почти наверняка вызывает буферизацию промежуточного вывода таким образом, что вы не видите того, что ожидаете (по крайней мере, не тогда, когда вы этого ожидаете).

Возможно, есть способ достичь того, чего вы хотите с умным использованием опции stdbuf и / или --line-buffered grep, однако более простой способ - запустить весь конвейер внутри watch:

watch -n 1 'tail -n 15 /var/log/syslog | grep -v -E "pattern1|pattern2"'
0
ответ дан 22 May 2018 в 21:06
  • 1
    Оно работает! К сожалению, это не соответствует моим потребностям. Я открою для этого еще одну тему! В любом случае спасибо... – Mike V.D.C. 29 June 2017 в 17:59
  • 2
    Здесь - моя реальная проблема. – Mike V.D.C. 29 June 2017 в 18:24

Проблема с вашим watch -n 1 tail -n 15 /var/log/syslog | grep -v -E 'pattern1|pattern2', я думаю, заключается в том, что он запускает tail -n 15 /var/log/syslog внутри watch, а затем передает результат на grep. Это почти наверняка вызывает буферизацию промежуточного вывода таким образом, что вы не видите того, что ожидаете (по крайней мере, не тогда, когда вы этого ожидаете).

Возможно, есть способ достичь того, чего вы хотите с умным использованием опции stdbuf и / или --line-buffered grep, однако более простой способ - запустить весь конвейер внутри watch:

watch -n 1 'tail -n 15 /var/log/syslog | grep -v -E "pattern1|pattern2"'
0
ответ дан 18 July 2018 в 11:01

Проблема с вашим watch -n 1 tail -n 15 /var/log/syslog | grep -v -E 'pattern1|pattern2', я думаю, заключается в том, что он запускает tail -n 15 /var/log/syslog внутри watch, а затем передает результат на grep. Это почти наверняка вызывает буферизацию промежуточного вывода таким образом, что вы не видите того, что ожидаете (по крайней мере, не тогда, когда вы этого ожидаете).

Возможно, есть способ достичь того, чего вы хотите с умным использованием опции stdbuf и / или --line-buffered grep, однако более простой способ - запустить весь конвейер внутри watch:

watch -n 1 'tail -n 15 /var/log/syslog | grep -v -E "pattern1|pattern2"'
0
ответ дан 24 July 2018 в 19:42

Другие вопросы по тегам:

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