さて、RHEL6 で機能した次のコマンドを試すことができます:
1) 「iostat」出力でより多くの I/O を実行しているデバイスが何であれ、fuser
で使用します。 コマンドは次のとおりです:
fuser -uvm device
2) より多くの I/O を引き起こしているユーザー名を持つプロセスのリストを取得します。それらの PIDS を選択し、lsof
で使用します コマンドは次のとおりです:
lsof -p PID | more
3) 最大 I/O を実行しているユーザーとともに、ファイル/ディレクトリのリストを取得します。
ファイルを使用するプロセス内以外で、ファイルごとの I/O スループットを調べるツールはないようです。ただし、プロセス I/O スループットを調べる方法はあります。
iotop - プロセスの I/O スループットを表示する top/iftop のようなユーティリティです。
I/O が重いプロセスを特定した後、以下を使用して、どのファイルが使用されているかを調べます
lsof -c <process name>
これにより範囲が絞り込まれ、ソースを特定するのに役立ちます。
inotifywait
を使用できます inotify-tools
から どのファイルに書き込まれているのかを正確に知るために。書き込まれているデータの量はわかりませんが、少なくともどのファイルに書き込まれているのかがわかります。
例として、このコマンドは /tmp
で作成、変更、または削除されるとすぐにファイル名を出力します。 :
$ sudo inotifywait -e modify -e attrib -e move -e create -e delete -m -r /tmp
Setting up watches. Beware: since -r was given, this may take a while!
Watches established.
/tmp/ CREATE test
/tmp/ MODIFY test
残念ながら、書き込み先のファイルが含まれるディレクトリを推測する必要があります。ルート ディレクトリで使用しようとすると失敗しますが、オーバーライドできるようです:
$ sudo inotifywait -e modify -e attrib -e move -e create -e delete -m -r /
Setting up watches. Beware: since -r was given, this may take a while!
Failed to watch /; upper limit on inotify watches reached!
Please increase the amount of inotify watches allowed per user via `/proc/sys/fs/inotify/max_user_watches'.