Linuxでは、どのプログラムがログファイルを使用し、エントリを更新し、ログファイルを埋めるかを見つける方法です。
ベストアンサー1
これに対する簡単な答えはありません。以下を使用できます。
通知する
inotify
ファイルが変更されたら通知を受け取ることができます。inotify
ユーティリティ自体ではなく、Linuxカーネルが提供するインタフェースですが、パッケージinotifywait
にあるものなどのいくつかのユーティリティもあります。inotify-tools
問題は、inotify
どのプロセスがファイルを変更したかを教えてくれないことです。
例:
mst@mst-nb1:~$ inotifywait 123
Setting up watches.
Watches established. # now i write to "123" in another terminal
123 MODIFY
ラソフ
どのプロセスがファイルを開いているかを確認する非常に強力なユーティリティですlsof
。たとえば、これにより、lsof /var/log/syslog
現在どのプロセスがファイルを開いているかを確認できます。
問題は、lsof
時間の経過とともにファイルを監視できず、ファイルが実行されたときに何が起こっているのかについてのスナップショットのみを提供できることです。あなたの場合、ファイルに何が記録されたのか知りたいのですが、ファイルが永久に開いているかどうかはわかりません(おそらくそうではない可能性が高い)。書き込みプロセスが常にファイルを開いたままにしない限り、あまり役に立ちませんlsof
。これは、書き込み中にファイルを実行する場合にのみ正しいプロセスを指すことができるためです。
lsof
以前のようにファイルを監視できない理由inotify
は、単にファイルシステムをスキャンして情報を取得しますが、監視者を設定しないため/proc
です。
例:
# Terminal 1 (I open the file)
mst@mst-nb1:~$ cat > 123
# Terminal 2
mst@mst-nb1:~$ lsof 123
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
cat 24097 mst 1w REG 252,1 0 16791997 123
ロギングファイルシステム
これは最善の機会かもしれませんが、これを達成するにはかなりの努力が必要です。サーキットブレーカを使用して、loggedfs
ログファイルと同じディレクトリにインストールできます。次に、ファイルがいつ開かれたかについての詳細を提供する必要があります。
唯一の問題loggedfs
は、いくつかの単純なコマンドラインユーティリティほど使いにくいということです。
この問題を解決したい場合は、loggedfs
以下を参照してください。文書
結論として
結論は様々な可能性があるがsimple
方法がないということだ。