"tail -f | grep -q" в качестве триггера, не беспокоясь о предыдущем найденном

Proxifier-подобное решение для Linux:

По состоянию на 2019 год не существует связанного приложения, которое делает все, что делает проксификатор, и разработчик проксификатора в настоящее время не желает портировать приложение на Linux, вместо этого вы можете использовать разные приложения для каждой функции проксификатора, я работаю над этим, чтобы объединить все это в одном приложении, но результат проекта немного далек. вот различные решения для каждой необходимой функции:

  • Блокировка сети для приложения

    Вот подробный список решений для этой цели

  • Маршрут по ip

    Linux таблицу маршрутизации можно использовать для добавления правил в таблицу маршрутизации и, таким образом, для маршрутизации диапазона ip/ip -

  • Маршрут по домену

    Комбинация sniproxy и DNS-сервера может выполнять эту работу (это также поддерживает socks и может быть легко настроено)SNI -SSL -Прокси и Unbound(на гитхабе)

  • Маршрут по приложению (прокси)

    Proxybound может выполнить эту работу

  • Маршрутизация по приложениям (интерфейсы)

    В этом ответе перечислены различные решения для этой цели.

  • Просмотр и мониторинг сетевого трафика

    Сеть -Наблюдатель или Наблюдатель -TCP -Вид выполнит задание

0
19.04.2021, 13:41
1 ответ

По умолчанию tail -fсчитывает 10 последних строк, а затем переходит к последующим. Вы можете использовать -n, чтобы переопределить этот номер, поэтому tail -n0 -fначинается с текущего конца, игнорируя любое более раннее содержимое, а затем следует новые изменения.

Обратите внимание, что если вы запустите:

start tomcat in some way
tail -n0 -f logfile | grep -q

вы полагаетесь на то, что tomcat будет достаточно медленным, чтобы tailуспел запуститься до того, как tomcat напишет строку, говорящую о том, что он запущен. Обычно это может быть так, но сценарий можно запланировать так, чтобы была произвольно -длительная задержка перед tailзапуском. Так что, действительно, вы должны как-то устроить так, чтобы tailстартовал первым.

Я мог представить что-то подобное, но не уверен:

tail -n0 -f logfile | grep -q &
pid=$!
start tomcat in some way
wait "$pid"

Кроме того, есть небольшая проблема, заключающаяся в том, что хотя grep -qзавершает работу в тот момент, когда видит совпадающую строку, это еще не приводит к выходу tail. tailзавершит работу только тогда, когда увидит, что канал закрыт, и это происходит только тогда, когда он снова попытается записать в канал, когда в следующий раз в файле появятся новые данные.

Конечно, если файл постоянно заполняется новыми записями, это произойдет достаточно скоро.

3
28.04.2021, 22:52

Теги

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