[編集:ツールをすばやくグーグル検索した後]
multitail を試してみてください - http://www.vanheusden.com/multitail/
Dennis Williamson の回答に固執したい場合 (それに応じて彼に +1 を付けました)、ここに空白が埋められています。
シェルで、次のスクリプトを実行します (または、これは zsh に相当します。zsh タグが表示される前に、これを bash で作成しました)。
#!/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で実行されるシンボリックリンクスクリプトをスクリプト化して補償します.それのための。
[編集: 1 つの行の終わりから誤った 'j' を削除しました。また、「lastModifiedFile」という変数名が存在しませんでした。設定した適切な名前は「lastModified」です]