SysInternals FileMon for Linuxと同等ですか?


13

Ubuntuでアプリケーションをデバッグしようとしています。ファイルが開かれた場合、(存在しないファイルであっても)聞く必要があります。

Process Monitor(以前はFileMonとして知られていました)はWindowsで利用可能です-Ubuntuのユーティリティベルトには何がありますか?

ありがとう!

アシュリー

回答:


7

あなたはstraceを探しています。こちらをご覧くださいhttps : //wiki.ubuntu.com/Strace


2
私が理解しているように、filemonを実行すると、ユーザーはすべてのファイルアクセスを確認できます。一方、straceでは、最初に開くアプリを指定する必要があります。これには、これらのファイルにアクセスしているアプリを事前に知る必要があります。見たいファイルにアクセスしているアプリがわからない場合はどうしますか?
-chuacw

8

それはあなたが望むものに依存します:

  • 大規模な場合は、inotifyを見て、プロセスが行うすべてのファイルアクセスを確認します。

  • 小さい場合、straceを使用すると、特定のプロセスが作成するシステムコールを監視できます。Straceはとても素晴らしいです。strace -f -eopen $cmdたとえば、を実行することにより、プロセスの「open」への呼び出しをトレースできます。manページはもちろん、構文の完全な詳細を持っています。


ありがとうpjz。具体的に言うと、UbuntuでOgre3dを使い始めるのに苦労しています。私のテストアプリケーションは、起動中にいくつかの.cfgファイルを探しているようです。ファイルを開こうとするすべての試みを聞きたいので、正しいファイルが使用可能であり、正しいアクセス権があることを確認できます。
chickeninabiscuit

strace -e open ./app-
ジャスティン

2

strace起動中のアプリケーションの前にいると、アプリが何をしているかを見るのに適しています。
lsof既に実行中のアプリが使用しているファイルを確認できると便利です。

BTW:
lsof -ni:22ポート22を使用しているプロセスを示します。



1

以下は、straceを使用してファイルの変更を追跡する例です。

strace -f -e trace=file -p7546 -o /tmp/outputfile

-f子プロセスからのイベントがキャプチャされるようにします。
-e trace=file(例えば、我々はファイル関連のシステムコールを捕らえるべきであると言うstatopenfutexなど)
-p(から取得したプロセスIDれるps -aux他の手段か)が -oOUTPUTFILEを指定(そこに多くのデータとすることができ、あなたの代わりにフィルタとしてgrepを使用することができます。




0

これは古いですが、今日の現実に合わせて更新することをお勧めします。

1つのプロセスとその子だけをデバッグするには、straceが最適な方法です。欠落しているファイルであっても、すべてのファイルアクセスを簡単に表示できます。

汎用システムデバッグの場合、カーネルの監査機能がそれを行うことができ、推奨される方法です。最近のカーネルにはパッチは不要で、インストールされた監査パッケージのみがインストールされています

これを使用するための簡単なGUIは次のとおりです。

監査GUI

これは、windows filemonを複製し、すべての場所、プロセスなどのファイルアクセスを監視します。

また、この投稿を確認してください


0

これが私にとってうまくいったことです(Linux Mint 19.1):

sudo lsof 2>&1 | grep programnamehere

なぜ2>&1必要なのかはわかりませんが、使用しない限りフィルタしませんでした。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.