[Edit : après une rapide recherche d'un outil sur Google].
Vous pourriez vouloir essayer le multitail - http://www.vanheusden.com/multitail/
Si vous voulez vous en tenir à la réponse de Dennis Williamson (et j'ai mis un +1 en conséquence), voici les blancs remplis pour vous.
Dans votre shell, exécutez le script suivant (ou son équivalent zsh, je l'ai fait en bash avant de voir le tag 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
Mettez ce processus en arrière-plan en utilisant la méthode normale (encore une fois, je ne connais pas zsh, donc ça peut être différent)...
./updateSymlink.sh 2>&1 > /dev/null
Puis tail -F $SYMLINK_PATH
de façon à ce que la queue gère le changement du lien symbolique ou une rotation du fichier.
C'est un peu compliqué, mais je ne connais pas d'autre moyen de faire cela avec la queue. Si quelqu'un d'autre connaît un utilitaire qui gère cela, alors qu'il se manifeste parce que j'adorerais le voir moi-même aussi - les applications comme Jetty par défaut font des journaux de cette façon et je script toujours un symlinking script exécuter sur un cron pour compenser cela.
[Edit : Suppression d'un 'j' erroné à la fin d'une des lignes. Vous aviez également un mauvais nom de variable "lastModifiedFile" qui n'existait pas, le nom correct que vous avez défini est "lastModified"].