[Edit: après une googler rapide pour un outil]
Vous pouvez essayer multitail - http://www.vanheusden.com/multitail/
Si vous voulez coller avec la réponse de Dennis Williamson (et je l'ai + 1'ed lui en conséquence) voici les blancs remplis pour vous.
Dans votre shell, exécutez le script suivant (ou son équivalent zsh, je fouetté ce en bash avant d'avoir vu l'étiquette 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
Contexte que processus selon la méthode normale (encore une fois, je ne sais pas zsh, il peut être différent) ...
./updateSymlink.sh 2>&1 > /dev/null
Puis tail -F $SYMLINK_PATH
de telle sorte que la queue remet le changement du lien symbolique ou une rotation du fichier.
Ceci est légèrement compliqué, mais je ne connais pas d'autre moyen de le faire avec queue. Si quelqu'un d'autre connaît un utilitaire qui gère cela, alors laissez-les aller de l'avant parce que j'aimerais le voir moi aussi - des applications comme Jetty par défaut se connectent de cette façon et j'écris toujours un script symlinking sur un cron pour compenser pour ça. [Edit: Suppression d'un "j" erroné à la fin de l'une des lignes.Vous avez également eu un mauvais nom de la variable « lastModifiedFile » n'existait pas, le nom propre que vous avez défini est « lastModified »]
merci, je pourrais avoir à le faire. J'ai regardé dans multitail, mais malheureusement c'est interactif seulement qui signifie que je ne peux pas diriger sa sortie ailleurs. Je vais essayer et voir où je vais. La chose est que je voudrais que cela ne fonctionne que lorsque la queue est en cours d'exécution et de sortie lorsque cela se termine, et je ne suis pas sûr de savoir comment faire cela. – Axiverse
Merci! C'est fondamentalement la seule solution que j'ai aimé (et j'ai beaucoup cherché pour cela). –
Neato. Edité pour corriger un bug où ça ne marcherait pas la première fois pour moi. (Parce que getCurrentlySymlinkedFile renvoyait une chaîne vide, et le lastModifiedDate inexistant typo'd a également évalué à une chaîne vide.) – funroll