[Редактировать: после быстрого поиска в инструменте]
Возможно, вы захотите попробовать мультитейл - http://www.vanheusden.com/multitail/
Если вы хотите придерживаться ответа Денниса Уильямсона (и яve + 1 ему соответственно) вот пробелы, заполненные для вас.
В вашей оболочке запустите следующий скрипт (или это эквивалентно zsh, я вынул это в bash, прежде чем увидел тег zsh):
#!/bin/bash
TARGET_DIR="some/logfiles/"
SYMLINK_FILE="SoftwareLog.latest"
SYMLINK_PATH="$TARGET_DIR/$SYMLINK_FILE"
function getLastModifiedFile {
echo $(ls -t "$TARGET_DIR" | grep -v "$SYMLINK_FILE" | head -1)
}
function getCurrentlySymlinkedFile {
if [[ -h $SYMLINK_PATH ]]
then
echo $(ls -l $SYMLINK_PATH | awk '{print $NF}')
else
echo ""
fi
}
symlinkedFile=$(getCurrentlySymlinkedFile)
while true
do
sleep 10
lastModified=$(getLastModifiedFile)
if [[ $symlinkedFile != $lastModified ]]
then
ln -nsf $lastModified $SYMLINK_PATH
symlinkedFile=$lastModified
fi
done
Фон, который обрабатывает с использованием обычного метода (опять же, я не знаю zsh, поэтому он может отличаться) ...
./updateSymlink.sh 2>&1 > /dev/null
Затем tail -F $SYMLINK_PATH
так, чтобы хвост передавал изменение символической ссылки или поворот файла.
Это немного запутанно, но я не знаю другого способа сделать это с хвостом.Если кто-то еще знает об утилите, которая обрабатывает это, то пусть они сделают шаг вперед, потому что я тоже хотел бы увидеть это сам - приложения, такие как Jetty, по умолчанию делают логи таким образом, и я всегда пишу сценарий символической ссылки, запускаемый на cron, чтобы компенсироватьдля него.
[Редактировать: убрал ошибочный 'j' с конца одной из строк.У вас также было неверное имя переменной «lastModifiedFile», не существовало, правильное имя, которое вы указали, - «lastModified»]