“assistindo” um log no FreeBSD vs Linux

4

Nos sistemas Linux eu posso

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

ou

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

Para mostrar atualizações em um log a cada 1 segundo. No FreeBSD, no entanto, o comando watch faz algo totalmente diferente. Quem sabe um bom comando do FreeBSD para o que estou tentando fazer? =)

    
por Cory J 14.04.2010 / 23:27

6 respostas

20

Que tal isso: $ tail -f logfile ?

E se você precisar do grep: $ tail -f logfile | grep foobar .

    
por 14.04.2010 / 23:31
6
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/
    
por 20.04.2010 / 13:55
4
  • Linux: watch -n 5 tail /var/logfile
  • Freebsd: cmdwatch -n 5 /var/logfile
  • Openbsd: gnuwatch -n 5 /var/logfile

(Instalar das Portas para os BSDs)

    
por 12.02.2016 / 09:30
2

Você pode escrever um loop rápido de shell:

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

    
por 14.04.2010 / 23:31
2

Se eu definir o seu "o que estou tentando fazer" como "assistir a alterações em um arquivo de log", sugiro que, em vez de usar watch , você possa usar apenas o "-f" (para "seguir" ) ou "-F" no comando tail , como em tail -f /var/log/whatever.log . A saída também pode ser enviada pelo grep para fornecer a versão filtrada que você mostra lá. Acredito que isso também seja mais eficiente do que "assistir".

Edit: Eu achei que a opção "follow" não estava disponível no BSD, mas parece que sim. Deve ter pensado em outra coisa que não está lá ...

    
por 14.04.2010 / 23:32
0

Você pode usar esse script para todas as coisas que deseja fazer com o comando watch.

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

Uso: sh scriptname.sh exemplo: sh scriptname.sh ls -l

    
por 14.10.2015 / 08:28