Я пытаюсь использовать tail -f
для отслеживания файла журнала в указанной папке. Я могу сделать это с помощью простой команды tail -f [path to file]
, но есть ли способ, чтобы у меня была команда, которая запускается и отслеживает самый последний/последний измененный файл в папке. Я не эксперт в этой области, поэтому любая помощь будет оценена
решение1
Вы можете запустить ls -tp | sort | grep -v / | tail -n 1
команды и пропустить их черезfor
цикл, чтобы затем запустить tail -F
команду только для самого нового файла, чтобы отслеживать изменения его содержимого. Вы также можете рассмотреть ls -tpr | grep -v / | tail -n 1
команды вместо этого.
for VAR in $(ls -tp | sort | grep -v / | tail -n 1); do tail -F $VAR; done
или
for VAR in $(ls -tpr | grep -v / | tail -n 1); do tail -F $VAR; done
Дополнительные ресурсы
-
-t sort by modification time, newest first -p, --indicator-style=slash append / indicator to directories -r, --reverse reverse order while sorting
-
-v, --invert-match Invert the sense of matching, to select non-matching lines. (-v is specified by POSIX .)
-
-n, --lines=[+]NUM output the last NUM lines, instead of the last 10; or use -n +NUM to output starting with line NUM
решение2
Вы могли бы использовать МультиТейл, доступный как стандартный пакет во многих дистрибутивах.
Пример 1: Объединение двух файлов журнала в одном окне с разными цветами
multitail -ci green /var/log/yum.log -ci yellow -I /var/log/mysqld.log
Пример 2: Отображение пяти файлов журнала, объединение двух в один столбец
multitail -s 2 -sn 1,3 /var/log/mysqld.log -I /var/log/xferlog /var/log/monitorix /var/log/ajenti.log /var/log/yum.log
Источник: MultiTail – одновременный мониторинг нескольких файлов в одном терминале Linux.