Я хочу отслеживать изменения в нескольких файлах журнала в Linux. По сути, я хочу увидеть, какой файл журнала обновляется из набора из 20 файлов. Я проверил многозадачный инструмент, но его пользовательский интерфейс может обрабатывать до 5 файлов.
Любая помощь приветствуется.
Для того, что вы предлагаете, есть много способов сделать это в зависимости от ситуации.
Легкий: посмотрите в inotify
Более приспособленный (демон): fam
(Монитор изменения файлов)
Или, если это не обычное дело, вы будете делать:
Или на разовое: watch -d -n 1 ls -t
в каталоге, который вы хотите просмотреть (только в плоском каталоге, не рекурсивном, но вы можете изменить его для этого) - затем запустите tail для результата.
Есть много способов снять шкуру с этой кошки ... например ...
вы можете агрегировать журналы, используя logstash
если бы все они находились в одной папке, вы могли бы создать репозиторий git для отслеживания изменений ...
$ touch ~/test
$ git init
$ git add .
$ echo "##this is a comment" >> ~/test
$ git status | grep modified
=># modified: test
вы можете настроить контролировать смотреть контрольную сумму файлов,
check file /home/myhome/somefile.txt
if changed checksum then alert
check file /home/myhome/somefile2.txt
if changed checksum then alert
и, возможно, это может сработать ...
check directory /home/myhome/
if changed checksum then alert
или более легкое использование инструменты inotify следить за изменениями;
inotifywait -m -r --format '%f' -e modify -e move -e create -e delete ~/test | while read line
do
echo "hello $line"
done
Если вы хотите сделать это из командной строки, вы можете использовать такой сценарий, чтобы сделать это
# 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
Сохраните этот файл как multitail.sh или как хотите, затем выполните вот так
./multitail.sh file.txt file1.txt file2.txt file3.txt file4.txt file5.txt Я только что запустил это, и он успешно запустил 6 файлов, нижняя сторона - это только сообщает вам, какой текст был изменен, а не имя файла текстового файла / файла журнала. Я использовал это в прошлом. Для получения дополнительной информации и т. Д. Смотрите здесь http://www.thegeekstuff.com/2009/09/multitail-to-view-tail-f-output-of-multiple-log-files-in-one-terminal/ этот человек сделал отличную запись, надеюсь, это поможет
Будь проще. tail -f
например:
tail -f file1 file2 file3 file4 file5
Если вы действительно хотите увидеть, какой файл был изменен, просто укажите их с правильной опцией сортировки: ls -alt file1 file2 file3
При этом вверху отобразится самый последний измененный файл.
Вы даже можете использовать динамический дисплей: watch -n 1 ls -alt file1 file2 file3