Será watch
única monitorar a saída visível de um comando? Digamos que eu esteja em um diretório com o seguinte conteúdo:
$ ls
a b c d e f g h i j k l m n
Se eu executar watch -g ls -1
, espero que saia se um arquivo for adicionado ou removido. O que realmente acontece é que ele sai somente se o arquivo em questão estiver visível na saída do terminal de watch
:
$ watch -g ls -1
Every 2.0s: ls -1 Wed Nov 13 16:35:03 2013
a
b
c
d
e
f
A exclusão do arquivo m
, que não é visível por causa do tamanho do meu terminal, não faz nada. Excluir um arquivo visível, digamos d
, faz watch
com que saia conforme o esperado.
A -g
bandeira é explicada assim na minha man
página:
-g, --chgexit
Exit when the output of command changes.
O que está acontecendo? Isso é normal? Como posso usar watch
para comandos com saída longa? Estou usando o watch from procps-ng 3.3.4
que foi instalado nos repositórios Debian.
-g
opçãowatch
faz? Não o encontro na minha versão dowatch
Respostas:
Encontrei este tópico intitulado: Bug # 225549: tenha watch monitor stderr . Esse segmento é de 2008, mas parece que versões mais antigas não suportam a observação de nada além de STDOUT.
Portanto, estamos limitados a apenas STDOUT. Quanto visível, há muita linguagem no
info watch
eman watch
isso me faz pensar que sua observação / suposição está correta.excerto
Também este bit em BUGS:
Se eu tivesse que adivinhar, acho que eles estavam armazenando os bits visíveis em um buffer entre as execuções e analisando apenas esses caracteres.
EDIT # 1
Eu depurei isso ainda mais usando
strace
e você pode verwatch
lendo a saída dols
comando para que ele elimine internamente a alteração.antes de excluir o
m
arquivodepois que o
m
arquivo é excluídofonte
watch -g foo; echo "Something changed!"
. Parece um bug estranhamente incapacitante em um programa tão estabelecido.-g
opção, mas eu tentei no Ubuntu e se comporta da mesma maneira.Tenho certeza de que você está buscando ferramentas inotify .
Minha página de manual para assistir , do procps-ng , diz
fonte
watch
comportado como o OP e sairia com a mudança.watch
se comporta dessa maneira. Ele sabe sobre inotificar.