現在、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 open
OPENイベントのみを表示するように出力を制限するオプションを追加できます。
inotifywait -e open -m -r /lib*