web-dev-qa-db-ja.com

ファイルを開いているプロセスの数を知る方法はありますか?

Linuxで現在ファイルを開いているプロセスの数を知る方法はありますか?

1
Bionix1441

lsofはこれを行うことができます:

lsof <filename>

例えば:

┌─[root@Fedora]─[~]─[02:39 pm]
└─[$]› lsof scripts/network_menu.sh
COMMAND     PID USER   FD   TYPE DEVICE SIZE/OFF   NODE NAME
less      26419 root    4r   REG  253,1    67271 931810 scripts/network_menu.sh
network_m 26572 root  255r   REG  253,1    67271 931810 scripts/network_menu.sh

上記の最初のインスタンスは、rootとしてファイルに対して「less」を実行している私です。2番目のインスタンスは、rootによって実行されているスクリプトです。

3
RobotJohnny

lsofは、その時点でどのプロセスがファイルを開いているかを示しますが、一定期間にファイルを開いているプロセスの数を確認したい場合は、inotifywaitまたはinotifywatch

inotifywaitを監視モードに設定して、指定したファイルのイベントを継続的に報告できます。

inotifywait -m -r /lib*

inotifywatchは、一定期間のイベントの要約を提供できます。

inotifywatch -t 10 -r /lib*

ファイルを開くプロセスを要求したので、-e openオプションを追加して、OPENイベントのみを表示するように出力を制限できます。

inotifywait -e open -m -r /lib*

コマンドlsof /path/filenameで試してください

ファイルを使用しているプロセスの詳細が表示されます。

2
Iggy B