アプリケーションを開いたときにどのファイルが実行されたかを知るにはどうすればよいですか?


12

アプリケーションを開いたときに画面の背後で何が起こるかを知りたい。たとえば、firefoxを開くとき、どのファイルが読み取られ、どのファイルが実行されるかを知りたいです。これを行う方法はありますか。端末からfirefoxを開いても情報は表示されません。OS:Ubuntu 12.04

回答:


21

使用してくださいstrace

例:セッション中にFirefoxによって開かれたすべてのファイルをリストします。

strace -f firefox 2>&1 | grep 'open('

このようなものでは結果あなたは、Firefoxの2番目のインスタンスを開く場合:http://pastebin.com/iRqxgiWN(「-f」オプションはちょうどstraceのフォロープロセスのフォークになります。)

例2:FireFoxによって実行されたすべてのプロセスをリストします。

strace -f firefox 2>&1 | grep -P 'exec[vlpe]*\('

YouTubeにアクセスすると、次のような結果になります。

[pid 25020] execve("/usr/lib/firefox/plugin-container", ["/usr/lib/firefox/plugin-containe"..., "/usr/lib/adobe-flashplugin/libfl"..., "-greomni", "/usr/lib/firefox/omni.ja", "-appomni", "/usr/lib/firefox/browser/omni.ja", "-appdir", "/usr/lib/firefox/browser", "15198", "false", "plugin"], [/* 57 vars */]) = 0
[pid 25024] execve("/bin/sh", ["sh", "-c", "ps x | grep netscape"], [/* 57 vars */]) = 0
[pid 25025] execve("/bin/ps", ["ps", "x"], [/* 57 vars */] <unfinished ...>
[pid 25026] execve("/bin/grep", ["grep", "netscape"], [/* 57 vars */]) = 0

他の多くのシステムコールでもこれを行うことができます...

パラメータを照合することによってopen()、あなたにgrep検索あなたはまた、どのモードでファイルが開かれている見つけることができます。

コマンドへの| grep -P 'O_RDONLY|O_RDWR'読み取りアクセスまたは| grep -P 'O_WRONLY|O_RDWR'書き込みアクセスをフィルタリングするために追加するだけです(先頭のパイプ文字が重要です!)。

編集

コメントで述べたように、strace -fe open firefoxFireFoxで開かれたすべてのファイルをリストするのにも使用できます。また、引数としてファイルパス(open、stat、lstat、chmod、access、...)を持つFireFoxによって行われたすべてのファイル操作strace -fe trace=file firefoxをリストするために使用できます。

さらに多くが利用可能です!チェックアウトstraceの(1)のマニュアルページを。


1
firefoxがシェルを実行してプロセスリストから "netscape"をgrepすることにかなり驚いています。
マイケル

1
straceには広範なフィルタリング機能が組み込まれています。たとえば、へのstrace -e open呼び出しのみを表示するようにしてくださいopen()
ジョンクーゲルマン

@Michaelは、シェル構文であるパイプ( "|")を使用するため、シェルを生成します。コードから同じパイプを手動で設定することもできますが、シェルからのエスケープコードがユーザーから渡される可能性がないことがわかっている限り、シェルにそれをさせる方がはるかに簡単です。
アリスターバクストン

1

実際には冗長モードと呼ばれるモードがありますが、Firefoxにそのようなオプションがあるかどうかはわかりません。ただし、問題はありません。すべてのアプリケーションはlog.soで構成されます。そのため、ログデータを確認してアプリケーションのアクティビティを確認できます。

Firefoxのログを有効にしたい場合は、これをチェックしてください。

http://bertrandbenoit.blogspot.in/2011/09/activate-logging-for-mozilla.html

Ubuntuでのすべてのアプリケーションアクティビティを特定のログで確認できます。すべてのアプリケーションは/var/logディレクトリに記録されます。

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