web-dev-qa-db-ja.com

どのプロセスがハードドライブに書き込んでいるかを調べます

私のLenovo T400とUbuntuでは、ハードドライブ書き込み用のライトが点滅し続けます。 LinuxでハードドライブへのI/Oを実行しているプロセスを見つけることができるかどうか疑問に思っていましたか? topの場合と同様に、どのプロセスがほとんどのCPUとメモリを使用しているかを確認できます。

33
Tim

Iotop は、必要なツールに適したツールです。また、DISK READ、DISK WRITE、SWAPIN、およびIO(全体のパーセンテージ)のいずれかでの累積I/O量を表示することもできます。これは、気の利いたインターフェースを介して行われます。

  • 押すだけ a キーボードで、それは上に空腹のプロセスを並べ替えます。
  • 順序を逆にすると、押すだけです r
  • 他のカラムでソートしたい場合は、左/右キーを押すだけです。

topのように、 プレゼンテーション はかなり忙しいです。もう1つは、topが持つ無数のオプションがないことです(たとえば、非表示にすることを選択できません)列には興味がありませんが)、ツールはその特定の目的には十分すぎるほどです。

42
tshepang

lsofman lsof )を使用できます。以下は、書き込み用に開いているすべてのファイルのリストを返します。

lsof | grep -e "[[:digit:]]\+w"
15
James Sumners

straceを使用します。

2
user541686

特にディスクアクティビティが少ない場合は、短いアクセスラインがすぐに消えないように、iotopをバッチモードで使用する必要があります。 Linuxでファイルシステムの読み取り/書き込みをファイル名でログに記録するにはどうすればよいですか? の回答は、これを行う方法を示しています。

これまでのところ、iotopが最善の総合的なソリューションです。次のコマンドは、ディスクを使用するすべてのプロセスのリアルタイム出力を提供します。

iotop -bktoqqq -d .5

where: -b     is batch mode
       -k     is kilobytes/s
       -t     adds timestamp
       -o     only show processes or threads actually doing I/O
       -qqq   removes output headers
       -d .5  updates every .5 seconds

プロセスIDを取得したら、次のようにしてファイルを見つけることもできます。

 lsof -p $PID
2
Frank Breitling