Linuxで現在ファイルを開いているプロセスの数を知る方法はありますか?
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によって実行されているスクリプトです。
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
で試してください
ファイルを使用しているプロセスの詳細が表示されます。