開かれているファイルを監視する方法


9

どのプロセスがシステム上のどのファイルを開いているかを監視して、どのプロセスが特定のファイルに触れ続けているかを追跡できるツールはありますか?

Lsofは、プロセスがファイルを開いている間に実行するかどうかを確認できますが、それがたまに実行される短命のプロセスである場合、lsofでそれをキャッチすることはできません。カーネルトレースを使用するものが必要です。


inotifyをチェックアウトしましたか?例えば、ここでキースの回答@を参照してください:askubuntu.com/questions/25442/... ここに私の答えは上のリンクのカップルがあります:askubuntu.com/questions/29566/...
belacqua

@jgbelacuaどちらも私が探しているものではありません。Inotifyは、特定のファイルがタッチされたときに通知し、lsofは、プロセスが開いているファイル、またはどのプロセスがファイルを開いているかを通知できますが、どのプロセスがファイルにアクセスし続けているのかを確認してから、閉じることができますlsofを実行してキャッチします。
psusi

回答:


7

おそらくそのために監査システムを使用することができます。これは少し重いですが、次のようなものが機能するはずです(/etc/audit/audit.rules内):

# delete all other rules
-D

# watch the file in question
-w /path/to/file -p rwxa

そして、私はあなたがauditdを再起動する必要があると思います:

sudo service audit restart

(インストールしていない場合は、auditdパッケージに含まれています。)犯人は/var/log/audit/audit.logにあります。


パーフェクト!それがまさに私が探していたものです。
psusi

0

残念ながら、Linuxがファイルの監視を許可するために使用するメカニズムはinotifyであり、有用なデータを抽出するのに十分な情報を提供していません。ファイル名と実行されたアクションのみを取得します。

私はこのようなものを使ってみました:

sudo inotifywait -mr somedir --format "%w%f" | while read file; do echo -n "$file => ";lsof -b $file; echo ""; done

これは、指定されたディレクトリでinotifyイベントをリッスンし、各イベントに対してlsofを実行して、ファイルにアクセスするプロセスをキャッチしようとします。残念ながら、私がテストしたほとんどのアクセス(エディタを使用してファイルに書き込むなど)の場合、LSOFコマンドは遅くなるだけで、問題のプロセスをキャッチできません。

プロセスが問題のあるファイルに対してより集中的なIOを実行する場合、マイレージは異なる場合があります。幸運を。


0

fnotifystatは、Linuxファイルのアクティビティを監視するように設計されたツールです。

sudo apt-get install fnotifystat
sudo fnotifystat
Total   Open  Close   Read  Write   PID  Process         Pathname
  7.0    1.0    1.0    5.0    0.0   2075 libvirtd        /proc/cpuinfo
  6.0    2.0    2.0    2.0    0.0   2075 libvirtd        /sys/devices/system/cpu/cpu0/topology/physical_package_id
  6.0    2.0    2.0    2.0    0.0   2075 libvirtd        /sys/devices/system/cpu/cpu1/topology/physical_package_id
  6.0    2.0    2.0    2.0    0.0   2075 libvirtd        /sys/devices/system/cpu/cpu2/topology/physical_package_id
  6.0    2.0    2.0    2.0    0.0   2075 libvirtd        /sys/devices/system/cpu/cpu3/topology/physical_package_id
  4.0    1.0    1.0    2.0    0.0   2075 libvirtd        /sys/devices/system/node
  4.0    1.0    1.0    2.0    0.0   2075 libvirtd        /sys/devices/system/node/node0
  4.0    2.0    2.0    0.0    0.0  15313 gnome-calendar  /usr/share/zoneinfo/Europe/London
  3.0    1.0    1.0    1.0    0.0   2075 libvirtd        /sys/devices/system/cpu/cpu0/topology/core_id
  3.0    1.0    1.0    1.0    0.0   2075 libvirtd        /sys/devices/system/cpu/cpu0/topology/thread_siblings_list
  3.0    1.0    1.0    1.0    0.0   2075 libvirtd        /sys/devices/system/cpu/cpu1/topology/core_id
  3.0    1.0    1.0    1.0    0.0   2075 libvirtd        /sys/devices/system/cpu/cpu1/topology/thread_siblings_list
  3.0    1.0    1.0    1.0    0.0   2075 libvirtd        /sys/devices/system/cpu/cpu2/topology/core_id
  3.0    1.0    1.0    1.0    0.0   2075 libvirtd        /sys/devices/system/cpu/cpu2/topology/thread_siblings_list
  3.0    1.0    1.0    1.0    0.0   2075 libvirtd        /sys/devices/system/cpu/cpu3/topology/core_id
  3.0    1.0    1.0    1.0    0.0   2075 libvirtd        /sys/devices/system/cpu/cpu3/topology/thread_siblings_list
  3.0    1.0    1.0    1.0    0.0   2075 libvirtd        /sys/devices/system/cpu/online
  3.0    1.0    1.0    1.0    0.0   2075 libvirtd        /sys/devices/system/cpu/present
  3.0    1.0    1.0    1.0    0.0   2075 libvirtd        /sys/devices/system/node/node0/meminfo
  2.0    0.0    0.0    0.0    2.0  12174 xchat           /home/cking/.xchat2/xchatlogs/FreeNode-#ubuntu-release.log
  1.0    0.0    0.0    0.0    1.0  12174 xchat           /home/cking/.xchat2/xchatlogs/FreeNode-#ubuntu-desktop.log
  1.0    0.0    0.0    0.0    1.0  12174 xchat           /home/cking/.xchat2/xchatlogs/FreeNode-#ubuntu-devel.log
  1.0    0.0    0.0    0.0    1.0  12174 xchat           /home/cking/.xchat2/xchatlogs/FreeNode-#ubuntu-kernel.log

停止するまで60秒ごとに上位10個のアクティブファイルを表示します。

sudo fnotifystat -t 10 60

ファイルのアクティビティを10秒ごとに6回だけ表示します。

sudo fnotifystat 10 6

thunderbirdのファイルアクティビティとプロセスID 1827を表示します。

sudo fnotifystat -p thunderbird,1827

すべてのファイル通知イベントと上位20のアクティブなアクティビティファイルを5分間の単一期間で表示します。

sudo sudo notifystat -v -d -c 5m 1

/ sysおよび/ procですべてのファイル通知イベントを表示し、定期的な統計は表示しないでください。

sudo fnotifystat -n -i /sys,/proc

詳細についてはfnotifystatのmanページを参照してください。これは非常に柔軟なツールです。

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