Comment surveiller les changements sur plusieurs files sous Linux?

Je souhaite surveiller les changements sur plusieurs files journaux sous Linux. En gros, je veux voir quel file journal est mis à jour sur un set de 20 files. J'ai vérifié l'outil multitail, mais son UI peut gérer jusqu'à 5 files maximum.

Toute aide est appréciée.

Pour ce que vous proposez, il existe de nombreuses façons de le faire en fonction de la situation.

Léger: regardez inotify

Plus fixé (daemon): fam (File Alteration Monitor)

Ou si ce n'est pas courant, vous allez faire:

Ou pour un one-off: watch -d -n 1 ls -t dans le directory que vous voulez regarder (uniquement dans un directory plat, pas récursif mais vous pouvez le modifier pour le faire) – puis exécutez la queue sur le résultat.

Si vous êtes prêt à le faire à partir de la command line, vous pouvez utiliser un script comme celui-ci pour le faire

 # When this exits, exit all back ground process also. trap 'kill $(jobs -p)' EXIT # iterate through the each given file names, for file in "$@" do # show tails of each in background. tail -f $file & done # wait .. until CTRL+C wait 

Enregistrez ce file en tant que multitail.sh ou que vous souhaitez puis exécutez comme ceci

./multitail.sh file.txt file1.txt file2.txt file3.txt file4.txt file5.txt Je viens d'exécuter cela et il a couru avec succès 6 files, l'inconvénient est que cela vous indique uniquement quel text a changé et non le nom de file du file text / journal. J'ai utilisé cela dans le passé. Pour plus d'informations, etc. regardez ici http://www.thegeekstuff.com/2009/09/multitail-to-view-tail-f-output-of-multiple-log-files-in-one-terminal/ this person a fait une excellente écriture espère que cela aide

Il existe plusieurs manières de peaufiner ce chat … par exemple, par exemple …

vous pouvez regrouper les journaux en utilisant logstash

S'ils étaient tous dans le même dossier, vous pourriez générer un repo git pour suivre les changements …

 $ touch ~/test $ git init $ git add . $ echo "##this is a comment" >> ~/test $ git status | grep modified =># modified: test 

vous pouvez configurer monit pour regarder la sum de contrôle des files,

 check file /home/myhome/somefile.txt if changed checksum then alert check file /home/myhome/somefile2.txt if changed checksum then alert 

et peut-être que cela pourrait fonctionner …

 check directory /home/myhome/ if changed checksum then alert 

ou plus de poids léger utilisent des outils inotify pour surveiller les changements;

 inotifywait -m -r --format '%f' -e modify -e move -e create -e delete ~/test | while read line do echo "hello $line" done 

Rester simple. tail -f

par exemple:

 tail -f file1 file2 file3 file4 file5 

Si vous voulez vraiment seulement voir quel file est modifié, il suffit de les énumérer avec l'option de sorting droite: ls -alt file1 file2 file3

Cela affichera le dernier file modifié en haut.

Vous pouvez même utiliser un affichage dynamic: watch -n 1 ls -alt file1 file2 file3