在Ubuntu 12.04中按进程分配的磁盘空间

有什么方法可以知道当前正在运行的进程正在使用多less磁盘空间? 我已经检查了pstop命令,但无法find。

这个问题背后的背景:

我有一个服务器,每天得到20Gb的填充。 我找不到它在哪里占用这个空间。 随着一些随机的build议我跑了

 fuser -m -u /dev/xxx 

并杀死它显示的过程。 重新启动服务器后,我看到almos t100Gb空间被释放。 再次,服务器正在被以前的速度填满。 但这次杀人服务没有给我任何空间。 我也检查了日志文件,但没有这样的问题。

你可以使用这个perl脚本:

wget http://aspersa.googlecode.com/svn/trunk/iodump

打开块转储

echo 1 | sudo tee /proc/sys/vm/block_dump

运行脚本一段时间(用Control&C退出)

while true; do sleep 1; sudo dmesg -c; done | perl iodump

你会得到这样的统计数据:

 ^C# Caught SIGINT. TASK PID TOTAL READ WRITE DIRTY DEVICES jbd2/sda3-8 620 40 0 40 0 sda3 jbd2/sda1-8 323 21 0 21 0 sda1 #1 4746 11 0 11 0 sda3 flush-8:0 2759 7 0 7 0 sda1, sda3 command-not-fou 9703 4 4 0 0 sda1 mpegaudioparse8 8167 2 2 0 0 sda3 bash 9704 1 1 0 0 sda1 bash 9489 1 0 1 0 sda3 mount.ecryptfs_ 9698 1 1 0 0 sda1 

不要忘记禁用内核块转储

echo 0 | sudo tee /proc/sys/vm/block_dump

资料来源: http : //www.xaprb.com/blog/2009/08/23/how-to-find-per-process-io-statistics-on-linux/