
Quero assistir a um arquivo que é substituído a cada 5 minutos por less
. Como posso less
seguir o novo descritor de arquivo em vez de manter o antigo exibido? watch "cat file"
não funcionará porque o arquivo é muito longo para caber em uma janela do terminal.
Responder1
Você pode obter esse efeito emitindo o F
comando ( Shift+F
) enquanto visualiza o arquivo no formato less
. Para parar de seguir e voltar à paginação, pressioneCtrl+C
Como seu arquivo só muda a cada 5 minutos, você também pode usar tail -f
e especificar um tempo de suspensão mais longo -s
(o padrão é 1 segundo). Por exemplo,
tail -f -s 60 myfile
verifica myfile
a saída a cada 60 segundos.
EDITAR: Devido à pergunta enganosa, a resposta acima foi insatisfatória. Segue a segunda tentativa:
Para reabrir o mesmo arquivo a less
cada 5 minutos, tente isto:
while true; do ( sh -c 'sleep 600 && kill $PPID' & less myfile ); done
Isso gerará um subshell que coloca em segundo plano outro processo de shell instruído a encerrar seu processo pai após 5 minutos. Em seguida, ele abre o arquivo com a extensão less
. Quando o comando shell em segundo plano mata o subshell pai, ele mata todos os seus filhos, incluindo o comando "less". Então o loop inicia o processo novamente.
A única maneira fácil que conheço de eliminar isso é encerrar o terminal em que seu shell original está. Se isso for inaceitável, você pode usar o truque "killfile":
touch killfile
while [ -f killfile]; do stuff; done
Para parar de fazer stuff
, rm
o killfile em outro shell.
Responder2
Você pode fazer algo semelhante em vim
.
Inicie uma sessão do servidor de vim
:
vim -R --servername refresh_session
Em seguida, em outro console, monitore o arquivo em busca de atualizações e diga à sessão do vim para recarregar o arquivo assim que ele for atualizado:
inotifywait -e close_write -m your_log_file | while read filename events; do
vim --servername refresh_session --remote $filename
done
Algumas pegadinhas.
- É claro que isso não funcionará se o seu
vim
não estiver compilado com oclientserver
recurso. inoifywait
irá parar de funcionar quando o arquivo for excluído. Espero que seu arquivo seja sobrescrito. É possível contornar isso também, é claro.
E se você quiser ter uma less
experiência mais parecida, você pode usar as less
macros para inserir suas less
combinações de teclas vim
.
/usr/share/vim/vim73/macros/less.sh --servername refresh_session
Responder3
Você pode tentar este comando: tail -f file
Responder4
Encontrei um programa antigo, mas muito bom, semelhante ao "menos" (um "pager"). Possui um comando "R" que atualiza o arquivo.
É chamado"lv", Você pode instalá-lo no Ubuntu usando:
sudo apt install lv
No entanto, parece não ter nenhum recurso de recarga automática.