Estou procurando a melhor maneira de duplicar o comando 'watch' do Linux no Mac OSX. Eu gostaria de executar um comando a cada poucos segundos para fazer a correspondência de padrões no conteúdo de um arquivo de saída usando 'tail' e 'sed'.
Qual é a minha melhor opção em um Mac e isso pode ser feito sem o download de software?
macos
bash
automation
watch
joseph.hainline
fonte
fonte
Respostas:
Você pode emular a funcionalidade básica com o loop do shell:
Isso fará um loop para sempre, limpe a tela, execute seu comando e aguarde dois segundos - a
watch your_command
implementação básica .Você pode dar um passo adiante e criar um
watch.sh
script que possa aceitaryour_command
esleep_duration
como parâmetros:fonte
your_command
parayour_command 2>&1|head -10
sleep ${2:-1}
tornar o intervalo opcional.echo "$(date)"
equivalente adate
?watch
quando a saída é mais de uma tela. Mostra apenas o final, enquantowatch
mostra apenas o topo. (Nem é o ideal)Com o Homebrew instalado:
brew install watch
fonte
brew
no mac.watch
: stackoverflow.com/questions/13593771/…watch
do brew não parece ler os aliases do usuário. Ao executarwatch somealias
, recebo um comando não encontrado.watch [command]
quando você o usawatch somealias
, assumindo quesomealias
é um comando que você pode executar no seu terminal.Use macports :
fonte
watch
comando diretamente.watch
comando foi preso no MacPorts?os shells acima farão o truque, você pode até convertê-los em um alias (talvez seja necessário agrupar uma função para manipular parâmetros)
Exemplos:
Como alternativa, a homebrew pode instalar o relógio em http://procps.sourceforge.net/
fonte
Pode ser que "assistir" não seja o que você deseja. Você provavelmente deseja pedir ajuda para resolver seu problema, não para implementar sua solução! :)
Se seu objetivo real é acionar ações com base no que é visto no
tail
comando , você pode fazer isso como parte da própria cauda. Em vez de executar "periodicamente", que é o quewatch
faz, você pode executar seu código sob demanda .Observe que
tail -F
continuará a seguir um arquivo de log, mesmo que ele seja rotacionado pelo newsyslog ou logrotate. Você deseja usar isso em vez de letras minúsculastail -f
. Verifiqueman tail
para detalhes.Dito isto, se você realmente deseja executar um comando periodicamente, as outras respostas fornecidas podem ser transformadas em um pequeno script de shell:
fonte
watch 2 cat *
expandia os parâmetros antes de executar o script; portanto, em um diretório com os arquivos "foo" e "bar", você executaria acat foo bar
cada 2 segundos. Que comportamento você esperava?*
sem passar para o comando que você executa. Tente executar:mkdir /tmp/zz; touch /tmp/zz/foo; watch -n 2 ls -l /tmp/zz/*
em uma janela. Enquanto estiver em execução, você podetouch /tmp/zz/bar
em outra janela. Veja se o seu "relógio" vê a alteração, na primeira janela. Eu acho que não. Não é para mim. Isso não tem nada a ver com Ubuntu vs OSX ou Linux vs Unix, é o comportamento embash
si.watch "ls -l /tmp/zz/*"
mas se você se lembrar de usar aspas, também funciona com o seu script. :)Indo com a resposta daqui :
Mas é realmente melhor instalar o relógio, pois isso não é muito limpo .
fonte
brew install watch
Se o relógio não quiser instalar via
Existe outra versão semelhante / cópia que foi instalada e funcionou perfeitamente para mim
https://github.com/tj/watch
fonte
Ou, no seu ~ / .bashrc
fonte
Eu tive um problema parecido.
Quando pesquisei no Google, me deparei com esse link recentemente. Isso não é exatamente 'instalação de software', simplesmente obter o binário para o comando 'watch'.
E o link é o comando Get watch para OSX
fonte
Aqui está uma versão ligeiramente alterada desta resposta que:
Para usá-lo:
~/bin/watch
chmod 700 ~/bin/watch
em um terminal para torná-lo executável.watch 1 echo "hi there"
~ / bin / watch
fonte
Tente o seguinte:
fonte
para evitar oscilações quando o comando principal leva um tempo perceptível para ser concluído, você pode capturar a saída e limpar a tela apenas quando terminar.
function watch {while :; do a=$($@); clear; echo "$(date)\n\n$a"; sleep 1; done}
use-o por:
watch istats
fonte
Use o gerenciador de pacotes nix !
Instale o nix e, em seguida,
nix-env -iA nixpkgs.watch
ele estará disponível para uso após a conclusão das instruções de instalação (incluindo a fonte. "$HOME/.nix-profile/etc/profile.d/nix.sh"
no shell).fonte