Как совместить часы реального времени с хвостом -F

Я всегда бегаю tail -F следить за журналом в окне терминала. Журнал имеет дату UTC в начале каждой записи:

[08-Jan-2013 16:24:22] Yo!

Когда я смотрю в окно журнала, мне нужно знать, сколько лет записи. Я бы предпочел не смотреть на мои местные часы и делать математику. Поэтому я подумал, что было бы здорово иметь в окне часы реального времени вместе с tail Ouput.

Я придумал фон while петля echoв date и возврат каретки. Когда запись в журнале написана, tail переписывает часы

while true; do echo -ne `date +"[%d-%b-%Y %H:%M:%S]"`"\r"; sleep 1; done &
log -F /path/to/log

Это в основном работает, но я обеспокоен тем, что происходит, когда выходы из tail а также date производить продукцию одновременно. Я не хочу, чтобы мой вид бревна был испорчен возвращением каретки.

Как мне объединить эти выходы вместе, чтобы они не могли столкнуться? Это работа для screen или что-то другое?

Журнал находится на удаленном сервере Debian. Моя рабочая станция работает под управлением OSX. Я подключаюсь через SSH, чтобы запустить скрипт выше.

2 ответа

Возможно, вы захотите взглянуть на мультитейл; он поддерживает несколько окон с отдельными или объединенными файлами журналов, окраску на основе регулярных выражений для каждого типа файла, параметры переноса по словам, просмотр имени файла (полезно для файлов, прошедших регистрацию) и многое другое.

Да, и часы в строке состояния.

Вы можете использовать опцию -s хвоста, чтобы ваш хвост спал, скажем, 5 секунд:

-s, --sleep-interval=S
 with -f, sleep for approximately S seconds (default 1.0) between iterations.

tail -s 5 -f /var/log/messages

Или команда watch покажет вам дату:

watch --interval=5 tail  /var/log/messages

    Every 5.0s: tail /var/log/messages                 Tue Jan  8 17:52:41 2013

8 января, 17:52:34 ядро ​​локального хоста: NEW: IN=eth0 OUT= MAC=00:60:56:73:14:6b:00:50:5b:93:49:5d:08:00 SRC=10,0.0.2 DST=10.0.0.1 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=29070 DF PROTO=TCP SPT=50561 DPT=25 WINDOW=5840 RES=0x00 SYN URGP=0

Другое (не особенно приятное) решение с использованием команды strace -t:

 strace -t tail -f /var/log/messages

Наконец, вы можете написать свою собственную измененную команду tail в python / perl / ruby:

https://stackoverflow.com/questions/136168/get-last-n-lines-of-a-file-with-python-similar-to-tail

и просто добавьте дату / время считывания в строку вывода.

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