コマンドがアクセスするファイルを正確に知る方法はありますか?

コマンドがアクセスするファイルを正確に知る方法はありますか?

私は実行された特定のプロセスがどのファイルとリソースにアクセスしているのかを知る必要があるソフトウェアを開発しています。

すべてのスクリプト、アプリケーション、デーモンがアクセスする内容を追跡するのではなく、ユーザーが提供する特定のプロセスだけを追跡したいと思います。

Python(または他の言語)でこれを行う方法はありますか?私は自分自身のいくつかの調査を行う予定であり、この種のことを知ってより多くの説明を提供できる知識豊富なユーザーがいる場合は、ここに尋ねたいと思いました。

ベストアンサー1

追跡できますシステムコールプログラムで制作されました。これはアクセスするファイルを見つける一般的な方法です。これを行うためのツールと呼ばれます。truss多くのUnixシステムではdtrussOSXではstraceLinuxで。ここではLinuxの使い方を説明します。他のシステムのマニュアルを確認してください。

最も単純な形式は

strace myprogram arg1 arg2

これにより、実行されたすべてのシステムコールのログが印刷されますmyprogram。 (はい.) ログをファイルに保存するには、オプションを使用します-o。子プロセスの呼び出しも記録するには、オプションを使用します-f。記録されるシステムコールを選択するには、optionsを使用します-e。利用可能なパラメータの詳細については、マニュアルを参照してください-e。たとえば、次の呼び出しは、およびをread除くファイル関連のシステム呼び出し(開くと閉じる、ディレクトリのリストなど)を記録しますwrite

strace -e'file,!read,!write' -o /tmp/myprogram.log -f myprogram arg1 arg2

おすすめ記事