[Edit: nach einem schnellen googeln für ein Werkzeug]
Sie möchten vielleicht multitail ausprobieren - http://www.vanheusden.com/multitail/
Wenn Sie mit Dennis Williamson Antwort auf halten wollen (und ich habe + 1'ed Ihm entsprechend) hier sind die Lücken für dich ausgefüllt.
In der Shell, das folgende Skript ausführen (oder es ist zsh gleichwertig, ich gepeitscht dies in bash, bevor ich den zsh Tag sah):
#!/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
Hintergrund, die das normale Verfahren Verfahren (wieder, ich nicht wissen, zsh, so dass es anders sein könnte) ...
./updateSymlink.sh 2>&1 > /dev/null
Dann tail -F $SYMLINK_PATH
so dass der Schwanz Hände, um die Änderung des symbolischen Link oder eine Rotation der Datei.
Dies ist ein wenig verschachtelt, aber ich kenne keine andere Möglichkeit, dies mit dem Schwanz zu tun. Wenn jemand anderes von einem Dienstprogramm weiß, das das handhabt, dann lasst sie einen Schritt vorwärts gehen, weil ich es gerne selbst sehen würde - Anwendungen wie Jetty loggen sich standardmäßig so ein und ich schreibe immer ein symlinking Skript, das auf einem Cron ausgeführt wird, um das auszugleichen dafür.
[Bearbeiten: Entfernte ein falsches 'j' vom Ende einer der Zeilen.Sie hatte auch einen schlechten Variablennamen „lastModifiedFile“ nicht gäbe, der richtige Name, den Sie festgelegt ist „lastModified“]
danke, ich muss das vielleicht tun. Ich habe in Multitail geschaut, aber leider ist es nur interaktiv, was bedeutet, dass ich es anderswo nicht ausgeben kann. Ich werde es versuchen und sehen, wo ich komme. Die Sache ist, dass ich möchte, dass dies nur läuft, wenn der Schwanz läuft, und wenn er austritt, und ich bin mir nicht sicher, wie ich das machen soll. – Axiverse
Danke! Dies ist im Grunde die einzige Lösung, die ich mochte (und ich habe viel nach diesem gesucht). –
Neato. Bearbeitet, um einen Fehler zu beheben, wo es das erste Mal für mich nicht funktionieren würde. (Weil getCurrentlySymlinkedFile eine leere Zeichenkette zurück gab und das typo'd nicht existente lastModifiedDate auch zu einer leeren Zeichenkette ausgewertet wurde.) – funroll