combinando tail -f com menos + F não funciona

1

Estou usando o bash do Ubuntu. Eu estou tentando combinar a cauda -f e menos + F como abaixo e nada está saindo.

tail -f long_running_log | less +F

long_running_log é um arquivo de log que está sendo constantemente escrito por outro processo. A linha a seguir mostrará várias coisas no console:     cauda -f long_running_log Mas uma vez que eu combino com menos + F com um cano, nada sai.

Caso você se pergunte por que estou fazendo isso, é porque eu quero filtrar os resultados da cauda ao longo do caminho. O comando real é assim:     cauda -f long_running_log | filter1 | filter2 | menos + F

Para fins de depuração, removi o filter1 e o filter2 no meio e ainda tenho problemas.

    
por Tom Bennett 04.06.2015 / 18:02

1 resposta

0

Da página de manual less :

   F      Scroll forward, and keep trying to read when the end of file is reached.  Normally  this  com-
          mand  would be used when already at the end of the file.  It is a way to monitor the tail of a
          file which is growing while it is being viewed.  (The behavior is similar  to  the  "tail  -f"
          command.)

O problema é que, enquanto o pipeline ainda estiver em execução (por exemplo, tail ainda estiver em execução), você não obterá EOF. Você pode verificar isso com um Ctrl-C que mata o pipeline - a saída filtrada é exibida.

Você pode descartar completamente o encanamento para 'menos + F' (você verá a saída filtrada exibida progressivamente no terminal) ou redirecionar a saída filtrada para outro arquivo, que você pode monitorar usando 'menos + F that_log_file' .

    
por 04.06.2015 / 19:47