Назад | Перейти на главную страницу

«Просмотр» журнала FreeBSD против Linux

В системах Linux я могу

watch -n1 tail /var/log/whatever.log

или

watch -n1 grep somestuff /var/log/whatever.log

Показывать обновления журнала каждые 1 секунду. Однако во FreeBSD смотреть команда делает что-то совсем другое. Кто знает хорошую команду FreeBSD для того, что я пытаюсь сделать? знак равно

Как насчет этого: $ tail -f logfile?

И если вам нужно grep: $ tail -f logfile | grep foobar.

Port:   gnu-watch-3.2.8
Path:   /usr/ports/misc/gnu-watch
Info:   GNU watch command
Maint:  ehaupt[ woof-woof ]FreeBSD.org
B-deps: 
R-deps: 
WWW:    http://procps.sourceforge.net/
  • Linux: watch -n 5 tail /var/logfile
  • Freebsd: cmdwatch -n 5 /var/logfile
  • OpenBSD: gnuwatch -n 5 /var/logfile

(Установить из портов для BSD)

Если я определю ваше «что я пытаюсь сделать» как «следить за изменениями в файле журнала», я бы предложил вместо использования watch что вы можете просто использовать параметр "-f" (для "следовать") или "-F" в tail команда, как в tail -f /var/log/whatever.log. Вывод также можно передать через grep, чтобы получить отфильтрованную версию, которую вы там показываете. Я считаю, что это также может быть более эффективным, чем «смотреть».

Редактировать: Я думал, что опция «следовать» недоступна в BSD, но похоже, что это так. Должно быть, думал о чем-то еще, чего нет ...

Вы можете написать быстрый цикл оболочки:

while sleep 1; do clear; grep somestuff /var/log/whatever.log | head -n 18; done

Вы можете использовать этот сценарий для всего, что хотите делать с помощью команды watch.

#!/usr/local/bin/bash
while [ true ]
do
clear
date
echo ------------------------------------
eval "$@"
sleep 2
done

Использование: sh имя_сценария.sh пример: sh имя_сценария.sh ls -l