Как совместить часы реального времени с хвостом -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
и просто добавьте дату / время считывания в строку вывода.