有什么方法可以知道当前正在运行的进程使用了多少磁盘空间?我已经检查ps
并top
输入了命令,但找不到答案。
这个问题的背景:
我有一个服务器,每天占用 20Gb。我找不到它把这个空间用在哪儿。根据一些随机建议,我运行了
fuser -m -u /dev/xxx
并终止显示的进程。重启服务器后,我看到几乎释放了 100Gb 空间。服务器再次以之前的速度被填满。但这次终止服务并没有给我任何空间。我也检查了日志文件,但没有出现这样的问题。
答案1
您可以使用 iodump 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/