Есть ли способ узнать, сколько дискового пространства использует текущий процесс? я проверил ps
и top
команда, но не могла узнать.
Предыстория этого вопроса:
У меня есть сервер, который заполняется 20 ГБ каждый день. Я не мог узнать, где он занимает это место. С каким-то случайным советом я побежал
fuser -m -u /dev/xxx
и убил процессы, которые показывает. После перезапуска сервера я вижу, что пространство almos t100Gb освобождено. И снова сервер заполняется прежним темпом. Но на этот раз сервисы убийств не оставляют мне места. Я также проверил файлы журналов, но там нет такой проблемы.
Вы можете использовать Perl-скрипт iodump:
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/