ログファイルはどこで更新されますか?

ログファイルはどこで更新されますか?

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方法がないということだ。

おすすめ記事