どのプロセスがファイルを生成するかを確認する方法は? [コピー]

どのプロセスがファイルを生成するかを確認する方法は? [コピー]

ファイルパスが与えられたら、どのプロセスがそのファイルを作成したか(および/または読み取り/書き込み)を確認するにはどうすればよいですか。

答え1

これラソフ(複数の回答ですでに説明されている)コマンドは、実行時にどのプロセスにファイルが開いているかを示します。lsofほとんどすべてのUNIXバリアントで動作します。

lsof /path/to/file

lsof2マイクロ秒前に開き、1マイクロ秒前に閉じたファイルについてはお知らせしません。特定のファイルを監視し、そのファイルにアクセスするときに反応する必要がある場合は、別のツールが必要です。

事前に計画できる場合は、ファイルをロギングファイルシステムファイルシステムLoggedFSはヒューズ階層内のファイルへのすべてのアクセスを記録するスタックファイルシステム。ロギングパラメータは高度に設定可能です。ヒューズを使用できます。すべての主要大学。ファイルが作成されたディレクトリへのアクセスを記録する必要があります。提供されているサンプル構成ファイルから始めてください。このガイド

loggedfs -l /path/to/log_file -c /path/to/config.xml /path/to/directory
tail -f /path/to/log_file

多くの大学では他の監視施設も提供しています。 Linuxでは、比較的新機能を使用できます。 監査サブシステム。これに関する文献はあまりありません(ただし、Loggedfsに関するもの以上)。このチュートリアルまたは 珍しい はいそれともauditctlマニュアルページ。ここでは、デーモンが起動したことを確認してから、以下を実行すれば十分ですauditctl

auditctl -w /path/to/file

(以前のシステムではこれが必要だと思いますauditctl -a exit,always -w /path/to/file。)ログを見てください/var/log/audit/audit.log

答え2

もちろん、繰り返し実行することができ、lsof運が良ければ、犯人はファイルが表示されるのに十分長くファイルを開いたままにします。つまり。 :

$ lsof -r1 /path/to/file

または多くのファイルの場合

$ lsof -r1 /path/to/folder/*

これは、特定の時点で指定されたパスへのすべてのアクセスを毎秒1回リストします。これには、ファイルにアクセスするプロセスのPIDのリストが含まれます。

これがうまくいかない場合、つまりファイルが非常に迅速に開いて閉じられることが頻繁に発生するため、より洗練されたツールを見つける必要があると思います。おそらくロギングファイルシステム何ができたのか?

核ランド
1秒に1回lsof動作しない場合は、whileループをハックしてできるだけ早くlsofを繰り返し実行できます。良い:

$ while true; do lsof /paht/to/file; done;

きれいではありませんが、おそらくそれでした。

答え3

あなたはそれを使用することができますlsofその理由は次のとおりです。

$ lsof /tmp/file
COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
less      4737 wena    4r   REG    8,6    90700 1643536 /tmp/file

less名前付きプロセスがファイルを保存していると思います」/tmp/ファイル「開いている。

ノートgeany:奇妙なことは、orを使用しても機能しないことですnano。より良いアドバイスを楽しみにしています。

答え4

lsChromeで使用されているファイルを使用してgrep見つけることができます

$ ls -l /proc/*/fd | grep "chrome"
lrwx------ 1 ba abc 64 Jul 16 22:19 104 -> /home/abc/.config/google-chrome/Default/Cookies
lr-x------ 1 abc abc 64 Jul 16 22:19 113 -> /opt/google/chrome/nacl_irt_x86_64.nexe
lrwx------ 1 abc abc 64 Jul 16 22:19 121 -> /home/abc/.cache/google-chrome/Default/Cache/data_0
lrwx------ 1 abc abc 64 Jul 16 22:19 122 -> /home/abc/.cache/google-chrome/Default/Cache/data_1
lrwx------ 1 abc abc 64 Jul 16 22:19 123 -> /home/abc/.cache/google-chrome/Default/Cache/data_2
lr-x------ 1 abc abc 64 Jul 16 22:19 125 -> /home/abc/.config/google-chrome/Dictionaries/en-US-3-0.bdic

別の方法は、次のものを使用することですlsofgrep

$ lsof | grep "chrome"
chrome     2204       abc  cwd       DIR                8,5     4096 1441794 /home/abc
chrome     2204       abc  rtd       DIR                8,5     4096       2 /
chrome     2204       abc  txt       REG                8,5 87345336 5111885 /opt/google/chrome/chrome
chrome     2204       abc  mem       REG                8,5  4202496 1443927 /home/abc/.cache/google-chrome/Default/Media Cache/data_3
chrome     2204       abc  mem       REG                8,5  1056768 1443926 /home/abc/.cache/google-chrome/Default/Media Cache/data_2
chrome     2204       abc  mem       REG                8,5   270336 1443925 /home/abc/.cache/google-chrome/Default/Media Cache/data_1
chrome     2204       abc  mem       REG                8,5    45056 1443924 /home/abc/.cache/google-chrome/Default/Media Cache/data_0

関連情報