有什么方法可以知道当前正在运行的进程正在使用多less磁盘空间? 我已经检查了ps和top命令,但无法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/