После некоторого дальнейшего исследования я обнаружил, что следующее решение работает: xargs -L 1
.
Piped Xargs не выполняет команду
Я хочу контролировать nginx access.log на предмет некорректных запросов и уведомлять себя о таких случаях.
Для этого я написал следующую команду:
tail -n0 -f access.log | grep --line-buffered '\{' | xargs sentry-cly -m
Но это решение не работает по какой-то причине. Если я удаляю последний канал и заканчиваю только grep - я увижу вывод, поскольку файл журнала получит новые записи.
Я не понимаю, почему Xargs не выполняется. То же самое будет, если вы замените sentry-cli на cat или echo.
Не могли бы вы уточнить, почему у меня такое поведение?
2 ответа на вопрос
По умолчанию xargs
собирает входные данные до тех пор, пока не получит столько данных, сколько может безопасно передать одному вызову утилиты (в данном случае sentry-cly -m
). Это означает, что он будет ждать, пока не увидит большое количество сообщений журнала, а затем запустится sentry-cly -m first message second message third message ... thousandth message ...
. Чтобы избежать этого, используйте xargs -L1 sentry-cly -m
- the -L1
заставляет его работать sentry-cly -m
для каждой строки, которую он читает (т.е. для каждого сообщения).
(Точно так же xargs -L2 sentry-cly -m
подождет, пока он не получит 2 сообщения, затем запустится sentry-cly -m "firstmessage" "secondmessage"
, затем подождет следующие два ... Вы можете увидеть это, запустив xargs -L2 echo
, а затем набрав в нем строки и наблюдая, когда эхо повторяется.)
Похожие вопросы
-
9
В чем разница между командами "su -s" и "sudo -s"?
-
4
Требуется хороший бесплатный образ Ubuntu Server VMWare
-
4
Каковы различия между основными дистрибутивами Linux? Я замечу?
-
-
2
Ограничить использование процессора для Flash в Firefox?
-
2
Как мне заставить мой микрофон работать под Debian GNOME?
-
2
Конки установки - образцы / идеи?
-
3
Каковы различия между оконными менеджерами Linux?
-
2
ThunderBird / Синхронизация освещения с SE k770i
-
4
Файловая система Linux
-
6
Полноэкранная медленная вспышка в KDE 4