Localizando arquivos modificados em tempo real?

3

Eu preciso rastrear arquivos (principalmente arquivos de log) de qualquer aplicativo que os gerencie a qualquer momento. Esses arquivos podem ser arbitrariamente nomeados (não necessariamente contendo log no nome do arquivo ou caminho).

Eu estava pensando que eu usaria fswatch -r / e depois passaria por coisas assim:

fswatch -r / | egrep --line-buffered -iv "//run|//sys"

Mas eu estou achando que não está dando nenhuma saída apreciável para o meu objetivo declarado ... Apenas vendo:

...
inotify_add_watch: No space left on device
inotify_add_watch: No space left on device
inotify_add_watch: No space left on device
/
/
/
/
^C
$

O que funcionaria neste caso? Eu não estou realmente comprometido em usar fswatch , então estou bastante aberto a quaisquer idéias ou soluções para encontrar esses arquivos sendo modificados a qualquer momento.

Note, eu também não me importo muito com "vomitar", já que eu deveria ser capaz de encontrar coisas muito rapidamente assim que eu as visse chegando no console, mas eu só quero essencialmente fazer qualquer coisa acontecendo no FS, que eu posso cortar as coisas sem importância.

    
por ylluminate 21.11.2018 / 20:17

1 resposta

2

Instale e configure o incrontab .

incron is a daemon which monitors filesystem events and executes commands defined in system and user tables.

Adicione o usuário em /etc/incron.allow (permita que o usuário use incrontab ), use incrontab -e para editar o arquivo.

Uso:

path mask command

path = caminho para o arquivo

mask = ver man inotify | less +/'inotify events'

command = comando a ser executado, no seu caso pode ser apenas uma mensagem que permite filtrar os resultados do seu syslog para saber a hora exata da modificação do arquivo.

e, g: Para monitorar um file , use:

/path/to/file IN_MODIFY "message: your file is accessed"

Se o arquivo for acessado por modificação, você encontrará uma mensagem em /var/log/syslog ou digite jounalctl -xe

Um exemplo de saída:

# grep "message: your" /var/log/syslog

Nov 22 10:05:04 hostname incrond[2263]: (USER) CMD ("message: your file is accessed")

Editar

É possível monitorar todos os arquivos em uma pasta específica. Esta é uma mensagem de amostra que permite que você liste todos os arquivos conforme eles estão sendo atualizados :

path/to/folder IN_MODIFY echo "$$ $@ $# $% $&"

The command may contain these wildcards:

$$ - a dollar sign
$@ - the watched filesystem path (see above example)
$# - the event-related file name
$% - the event flags (textually)
$& - the event flags (numerically)

Archlinux: incron

Como usar o Incron para monitorar arquivos e pastas importantes

    
por 21.11.2018 / 21:23