私のアプリサーバーフォルダで何が起こっているのか、つまり、どのファイルがプロセスxによって変更されたのか*.war
、最後のx分間にどのファイルが変更(置換/作成)されたのかを見たいです。
Linuxにこれを支援するツールはありますか?
私のアプリサーバーフォルダで何が起こっているのか、つまり、どのファイルがプロセスxによって変更されたのか*.war
、最後のx分間にどのファイルが変更(置換/作成)されたのかを見たいです。
Linuxにこれを支援するツールはありますか?
回答:
Strace(上記で概説)は、指定された実行中のソフトウェアのアクションをチェックする1つの方法です。
いくつかのコマンドwatch find dir/ -mmin 1
は、あるディレクトリで過去1分間の変更を確認するのにも役立ちます。
まさにあなたが探しているものに応じて、inotify-toolsはおそらくここで別の取引ツールです。
たとえばinotifywait -mr dir/
、指定されたディレクトリの変更を監視し、ファイルを開いたり、読み取ったり、書き込んだり、閉じたりしようとしているアプリケーションのフィードバックを即座に提供します。ただし、inotifyは、どのアプリケーションまたはプロセスがファイルにアクセスしているかについてのフィードバックを提供しません-それはstraceが行うことです。
通常、システムレベルの監視は、アプリケーションコンテナ環境で実行されているJavaソフトウェアの使用に限定されます。コンテナ(たとえばTomcat)のみが表示され、実際のアプリケーション(たとえば.war)はシステムと対話しません。
lsofにより、プロセスがアクセスしたファイルに関する情報を取得できます。
lsof -n -p `pidof your_app`
そしてその逆、あなたはいくつかのファイルに読み書きするプロセスのpidを得ることができます:
lsof -n -t file
strace
すべてのファイルアクセスを含むプロセスのすべてのシステムコールを監視するために使用できます。
プログラムを開始するとき:
$ strace ./myserver
PID経由で実行中のプロセスにstraceを添付することもできます。
$ ps aux | grep myserver
me 1859 0.0 0.0 25288 424 ? Ss Sep02 0:00 myserver
$ strace -p 1859