Lennart Poettering недавно сделал некоторое рытье в поведение при блокировании файловой системы Linux, которое не красит особенно розовое изображение для блокировки по NFS (особенно продолжение, с которым он связывается в нижней части сообщения).
Во-первых, необходимо узнать то, что разрушает пространство. Я предложил бы, чтобы Вы разыскали физический файл или каталог, который растет до того размера.
Самый простой путь состоял бы в том, чтобы регистрировать каталоги /
использование: (Я предложил бы выполнить его как корень),
# du -hs /* 2> /dev/null
4.2M /bin
25M /boot
204K /dev
6.7M /etc
19G /home
112M /lib
16K /lost+found
12K /media
16K /mnt
4.0K /multimedia
1018M /opt
0 /proc
15M /root
8.6M /sbin
12K /srv
4.2M /storage
0 /sys
108K /tmp
16G /usr
4.3G /var
Теперь, Вы выполняете это, когда компьютер недавно запустился и не начал есть пространство все же, и Вы сохраняете вывод в файле ( ~/record-space
)
$ sudo du -hs /* 2> /dev/null 1> ~/record-space
И затем когда Ваш компьютер приближается к "ПОЛНОМУ" состоянию, можно выполнить команду, снова сохраняющую вывод во втором файле.
$ sudo du -hs /* 2> /dev/null 1> ~/record-space2
Теперь можно сравнить эти два файла ( ~/record-space
и ~/record-space2
) видеть, как отличаются th e основные каталоги...
Мой любимый способ сравнить файлы использует diff
:
$ diff ~/record-space{,2}
обновление: См. комментарий Gille к этому ответу.
Вместо du -hs /*
, скорее используйте du -xsh /tmp/* /var/*/* ~/.*
.
Некоторые дистрибутивы или настольные среды могут показать предупреждение, если Ваше доступное дисковое пространство опускается ниже определенного порога; вот то, как можно мостить собственное. В терминале ввести crontab -e
(не как корень); это откроется редактор. Введите следующую строку:
*/5 * * * * if [ "$(df -P / | awk 'NR==2 {print $4}')" -le 1048576 ]; then df /; fi
Это означает каждые пять минут (*/5 * * * *
), если свободное пространство на диске ("$(df -P / | …)"
) отбрасывания ниже ([ … -le … ]
) 1048576 КБ (1 ГБ), отправьте Вам местную почту со свободным пространством на диске (крон отправит Вам вывод df /
).
Можно заметить, что “используемые” и “доступные” столбцы только составляют 95% общего количества; поэтому зарезервированного пространства и не ответственно за Вашу проблему (зарезервированная сумма не варьируется со временем).
Наиболее вероятные места, где что-то могло бы съедать Ваше дисковое пространство, /tmp
, /var
и Ваш корневой каталог (включая их подкаталоги). Я подсказки второго Stefan относительно установки базовой линии du
вывод и сравнение его с выводом, когда диск полон.
Если пространство освобождено, когда Вы загружаетесь, может быть несколько причин. Некоторая программа, по-видимому, создает большие временные файлы; возможно, эти файлы очищены, когда программа завершается, возможно, они очищены во время процесса начальной загрузки, возможно, они очищены, когда программа запускается снова. Один случай, с которым Вы не сможете наблюдать du
то, если большие файлы удалены, в то время как программа использует их. При удалении файла в системе Unix только имя файла исчезает сначала (файл является “несвязанным”); содержание файла только исчезает, когда больше нет никаких ссылок на файл: ни имя, ни процесс, имеющий его открытый. Другими словами, если программа создает большой файл, открывает его и удаляет его, пространство только освобождено, когда программа закрывает файл (который происходит автоматически, когда программа умирает). Вы не видите удаленные файлы с du
, но Вы видите их с lsof
(“перечисляют открытые файлы”):
lsof | grep '(deleted)'
В выводе lsof предпоследнее число, прежде чем имя файла (т.е. 7-й столбец) является размером файла.
du -xsh /tmp/* /var/*/* ~/.*
какdu
команда. Список каталога должен поймать наиболее вероятные местоположения и добавленное-x
должен пропустить другие файловые системы (например, Псевдодиски, Карты памяти). – Gilles 'SO- stop being evil' 13.11.2010, 14:13