web-dev-qa-db-ja.com

プロセスごとのディスクI / O

I/Oが最も高いプロセスを確認したい。正確には、最も高い書き込み操作を実行しているプロセスとその量を確認したいと思います。

iotopのようなツールがあることは知っています。しかし、私はSudoと非常に限られた特権を持つ外部環境なしで作業する必要があるので、psのような組み込みツールでこれをどのように実現できるか知りたいです。 CPU /メモリ使用量を見つけるために使用する次のようなものが欲しいのですが、

$ps -eo pid,command,%cpu,%mem --sort=-%cpu

更新:いくつかの方法を試した後、私は/proc/[pid]/ioファイルは特権が不足しているため、適切な特権なしにI/Oを取得する方法はないと思います。

 $cd /proc/; for i in $(ls | egrep -o ^\[0-9\]*); do cat $i/io; done
 cat: 1/io: Permission denied
 cat: 10/io: Permission denied
 cat: 10284/io: Permission denied
 cat: 11/io: Permission denied
 cat: 1174/io: Permission denied
 cat: 12/io: Permission denied
 ........
2
muhammad

問題は、他のユーザーのプロセスの通常のユーザーとしてこの情報にアクセスできないことです。

1
Hauke Laging

以下のコマンドリストのトップリソース消費プロセス

ps axo %cpu,%mem,command,pid | sort -nr | head

以下のコマンドは、ディスクioレートの統計を表示します。

 iostat 

特定のディスクIOレートについては、以下のコマンドを使用します

iostat -d diskname

以下は、ディスクIOレートを監視するために使用されるimpツールです

1. Iostat
2. Iozone
3. SAR
4. vmstat
1