Intereting Posts
Проблема кэширования dav2fs при сжатии Debian Как загрузить все сообщения электронной почты с сервера POP3 в один текстовый файл с mailx? Как сохранить содержимое существующего файла и конкатенировать содержимое из другого файла в него с помощью команды cat что значит «fork ()» скопирует адресное пространство исходного процесса Трудности установления соединения ppp с поставщиком GSM Вывод трубы из одной команды в нестандартный ввод другой команды Хорошая видеокарта для ТВ-выхода Как извлечь несколько строк, разделенных запятой из файла журнала? Почему директива stdout в файл непоследовательна и отложена? Что держит одну сторону rsync настолько занятой? Определите, какой процесс занимает большую часть полосы пропускания диска? Как удалить письма, отправленные от определенного локального пользователя на внешние адреса? Вставка текста в zsh в режиме vi Глобально изменить путь для всех пользователей, даже в cron Некоторые команды терпят неудачу, когда активный дисплей / vt отличается от того, где они запущены. Как исправить / обходным путем?

Подавлять сообщения об усечении файла при использовании хвоста

Я обрабатываю файл журнала с помощью tail -f messages.log и это часть вывода:

 Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce eget tellus sit amet odio porttitor rhoncus. Donec consequat diam sit amet tellus viverra pellentesque. tail: messages.log: file truncated Suspendisse at risus id neque pharetra finibus in facilisis ipsum. 

Он показывает tail: messages.log: file truncated когда файл автоматически усекается, и это должно произойти, но я просто хочу, чтобы tail отображал мне результат без этого сообщения обрезания.

Я пробовал использовать tail -f messages.log | grep -v truncated tail -f messages.log | grep -v truncated но он все равно показывает мне сообщение.

Есть ли способ подавить это сообщение?

Это сообщение выводится на stderr, как и все предупреждения и сообщения об ошибках.

Вы можете либо удалить все ошибки:

 tail -f file 2> /dev/null 

Или отфильтровать только сообщения об ошибках, содержащие truncate :

 (tail -f file 2>&1 >&3 3>&- | grep -v truncated >&2 3>&-) 3>&1 

Или с zsh или bash :

 tail -f file 2> >(grep -v truncated >&2) 

Если grep не избавится от вывода, его скорее всего печатают по стандартной ошибке. Самый простой способ избавиться от этого – просто свалить его:

 tail -f messages.log 2>/dev/null 

Может быть, поможет, если можно исправить происхождение этой ошибки. Это произошло потому, что что-то пишут в файл с переписыванием «>», а не с добавлением «>>».