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

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

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

答え1

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として実行されるスクリプトです。

答え2

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

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

答え3

lsofその時点でどのプロセスがファイルを開いたかを知ることができますが、一定期間にいくつかのプロセスがファイルを開いたかどうかを確認するには、またはをinotifywait使用できますinotifywatch

モニターモードでは、指定されたファイルのイベントを継続的に報告するようにinotifywaitを設定できます。

inotifywait -m -r /lib*

inotifywatchは、時間の経過とともにイベントの要約を提供できます。

inotifywatch -t 10 -r /lib*

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

inotifywait -e open -m -r /lib*

関連情報