/ var / log / syslog
を監視したい リアルタイム(または数秒以内)の変更の場合、ただし tail -f
新しい変更で更新されることはありません。
現在、UbuntuベースのLinux Mint 17 XFCEをライブで実行していますが、Ubuntu、Xubuntu、またはLinuxMintMateのライブISOでも機能していません。
私はこれらを試しました:
$ tail -f / var / log / syslog
$ tail -f --retry -s 1 / var / log / syslog
$ tail --follow =name / var / log / syslog
$ tail --follow =name --retry / var / log / syslog
$ tail --follow =name --retry -s 1 / var / log / syslog
ただし、最初はファイルの最後の数行のみを出力し、ファイルが大きくなっても更新は行われません(たとえば、空のファイルをマウントしようとすると、約15行のエラーが発生します)。
実際、ホームフォルダ内のテストファイルを追跡しようとしても、 tail -f testfile
を実行しても機能しないようです。 次に(別の端末で):
$ echo "new stuff">> testfile
$ echo "newstuff2">>テストファイル
$ echo"3">>テストファイル
はtail
を更新しません どちらか…
しかし、 testfile
を置くと / tmp
内 (tmpfsにマウントされます)その後、実行 ファイルの変更に従ってください。
テールフォローしないのはなぜですか?
ライブでの実行、または tail -f
を損なうoverlayfsについて何か奇妙なことがありますか? ?そして、ログをフォローする方法について何か提案はありますか? ( xwatch
正常に動作しますが、それよりも優れているか、ターミナルで動作しますか?)
strace tail -f -s 1 testfile
を実行してみました write(1、
の後の出力の最後の数行は次のとおりです はtestfile
の既存の数行です :
write(1, "new1\n", 5new1
) = 5
fstat64(3, {st_mode=S_IFREG|0644, st_size=22, ...}) = 0
fstatfs64(3, 84, {f_type=0x1021994, f_bsize=4096, f_blocks=968776, f_bfree=461437, f_bavail=461437, f_files=203469, f_ffree=190635, f_fsid={0, 0}, f_namelen=255, f_frsize=4096, f_flags=1056}) = 0
inotify_init() = 4
inotify_add_watch(4, "testfile", IN_MODIFY|IN_ATTRIB|IN_DELETE_SELF|IN_MOVE_SELF) = 1
fstat64(3, {st_mode=S_IFREG|0644, st_size=22, ...}) = 0
read(4,
承認された回答:
テールコード>
inotify
を使用します これはoverlayfs
では機能しません このバグレポートとこのディスカッションを参照してください。 @Xen2050は---disable-inotify
を指摘しました tail
に切り替えます この回避策を参照してください
apt-src
を使用できます coreutils
をインストールするには ソースを作成し、 tail
を再コンパイルします -UHAVE_INOTIFY
を使用