私のアプリケーションサーバーフォルダで何が起こっているのか、つまりプロセスxによってどのファイルが変更されたのか、または*.war
過去x分間にどのファイルが変更(交換/生成)されたのかを確認したいと思います。
この問題を解決するのに役立つツールはLinuxにありますか?
答え1
上記のStraceは、実行中の特定のソフトウェアの動作を確認する方法です。
特定のコマンドは、watch find dir/ -mmin 1
過去数分間の特定のディレクトリの変更を確認するのに役立ちます。
正確に探しているものによって異なります。イノティファイツールここで取引の別のツールになることもできます。
たとえば、inotifywait -mr dir/
特定のディレクトリの変更を監視し、ファイルを開く/読み取り/書き込み/閉じるように試みるすべてのアプリケーションに即座にフィードバックを提供します。ただし、inotifyは、どのアプリケーションやプロセスがファイルにアクセスしているかについてのフィードバックを提供しません。これがstraceがすることです。
システム・レベルのモニタリングは、一部のアプリケーション・コンテナー環境で実行されるJavaソフトウェアに限定的に使用されることがよくあります。コンテナ(Tomcatなど)のみが表示され、システムと対話する実際のアプリケーション(warなど)は表示されないためです。
答え2
答え3
プロセスがアクセスするファイルに関する情報を取得できます。ラソフ:
lsof -n -p `pidof your_app`
逆に、特定のファイルを書き込んだり読み取ったりするプロセスのPIDを取得できます。
lsof -n -t file
答え4
watch find dir/ -mmin 1
私にとってはうまくいきません。コピーして比較するだけです。
cp -r dir /tmp/olddir
# initialize/whatever
diff -r dir /tmp/olddir
かなりリソース集約的ですが、diff
スナップショットと時間の間のすべての変更を表示します。