Я хочу, чтобы мой компьютер издавал звуковой сигнал при каждом хвостовом событии.
У меня есть следующая команда
tail -f development.log | grep "something rare"
Есть ли простой способ, как труба к тому, что пищит? нравиться
tail -f development.log | grep "something rare" | beep
если да, то будет ли отображаться вывод grep?
Ответы:
Просто определите
beep
следующее:Затем вы можете использовать вашу команду:
источник
sed
или аналогичным образом (между tail и grep), чтобы с помощью регулярного выражения заменить его наsomething rare
себя много раз. Сколько раз это нужно сделать, зависит от того, насколько труба буферизована.tail -f development.log | stdbuf -oL -eL grep "something rare" | beep
Экран GNU имеет встроенную функцию звукового сигнала при изменении данного окна: см. Соответствующий раздел справочной страницы .
Заголовок резюме:
Как отмечалось в комментариях, это будет звучать при каждой новой записи в журнале, а не только над теми, которые соответствуют «чему-то редкому», так что это не совсем то, о чем просил ОП. Еще полезный трюк знать ИМХО.
Вы можете получить лучшее из обоих миров, открыв два
screen
окна (<C-a> c
чтобы открыть окно,<C-a> <C-a>
переключаться между двумя окнами):tail -f yourfile.log | grep 'something rare'
tail -f yourfile.log
Затем вы можете наблюдать за прокруткой журнала в окне 2, и вы услышите сигнал из окна 1, когда произойдет «что-то редкое».
screen
удивительно универсален - я настоятельно рекомендую прочитать об этом.источник
tail -f yourfile.log | grep something\ rare
а не простоtail -f logfile
something rare
. Отредактировано, чтобы отразить это. Grep сработал бы, но тогда он не увидел бы остальную часть журнала, только редкие строки - насколько я понимаю, он хочет иметь возможность просматривать весь журнал, прокручивающийся мимо, но быть предупрежденным о конкретных событиях.Вы можете остановить буферизацию вывода в команде grep. Смотрите man grep для деталей.
Вы можете направить вывод grep в звуковой сигнал.
Следующий пример от man beep ...
В этих руководствах много хорошего. Если бы нам не нужно было читать их, чтобы найти это. ;-)
источник
Команда watch имеет опцию --beep, и вы также можете установить интервал опроса, но стандарт с 2 секундами должен быть в порядке
источник
watch
работает, выполняя ваш параметр / команду каждый (интервал) разделов, а затем результаты до предыдущего запуска. Таким образом , вы будете хотеть использовать обычную версию команды хвост, вместо использованияtail -f
watch --beep
и завертывание моего хвоста / grep, я все еще не получил звуковой сигнал).Вы можете использовать sed для добавления control-G следующим образом:
или просто в редких строках, без использования grep, следующим образом:
в котором говорится: на линиях , где происходит что - то редкое, S ubstitute все для того же материала с контролем-G прикрепил на конце, и печати (но не печатать несовпадающих строк). Прекрасно работает!
источник
Хм, сложно. Мы могли бы сделать что-то подобное?
Или в вашем случае
Кажется, что он делает некоторую буферизацию, хотя. Я посмотрю, есть ли способ отключить эту буферизацию с помощью
for
цикла.Очевидно, вы должны иметь возможность регулировать буферизацию канала с помощью,
ulimit -p
но это продолжает жаловаться на неверный аргумент для меня. Я также нашел пост, в котором утверждается, что вам нужно перекомпилировать ядро, чтобы изменить это ограничение.источник
В предыдущей работе я не мог получить надежного наблюдателя только с помощью команды fu, поэтому у меня был скрипт-обертка, подобный приведенному ниже, который проверял файл каждые секунды poll_duration и выискивал новые строки для интересующей фразы.
Это было на Unix-машине. В Linux вы можете сделать это лучше, используя интерфейс inotify filewatcher. Если этот пакет ( inotify-tools в Ubuntu) присутствует, замените
с
Этот вызов блокируется, пока файл не будет изменен. Блокирующая версия почти так же эффективна, как и та, которую вы получите с
tail -f
версией, если канал можно настроить для работы без буферизации.Примечание . Сценарий сначала выполняет процедуру,
head --lines=$new_linecount
чтобы гарантировать, что строки, добавленные в файл после того, как мы его проверили, не перекосят кусок файла, который проверяется в этом цикле.источник