Я всегда бегаю tail -F
следить за журналом в окне терминала. В начале каждой записи в журнале указывается дата в формате UTC:
[08-Jan-2013 16:24:22] Yo!
Когда я смотрю в окно журнала, мне нужно знать, сколько лет этим записям. Я бы предпочел не смотреть на свои местные часы и заниматься математикой. Поэтому я подумал, что было бы здорово иметь отображение часов в реальном времени в окне вместе с tail
выход.
Я придумал, что 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, чтобы запустить приведенный выше сценарий.
Вы можете посмотреть на многоцелевой; он поддерживает несколько окон с отдельными или объединенными файлами журналов, раскраску на основе регулярных выражений для каждого типа файла, параметры переноса слов, просмотр имени файла (полезно для файлов с измененным журналом) и многое другое.
Да, и часы в статусной строке.
Вы можете использовать параметр -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 --interval=5 tail /var/log/messages
Every 5.0s: tail /var/log/messages Tue Jan 8 17:52:41 2013
8 января 17:52:34 localhost kernel: НОВОЕ: IN = eth0 OUT = MAC = 00: 60: 56: 73: 14: 6b: 00: 50: 5b: 93: 49: 5d: 08: 00 SRC = 10.0.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
Наконец, вы можете написать свою собственную модифицированную хвостовую команду в python / perl / ruby:
https://stackoverflow.com/questions/136168/get-last-n-lines-of-a-file-with-python-similar-to-tail
и просто добавьте дату / время чтения в строку вывода.