Как определить, что вызывает медленное увеличение используемого дискового пространства в Linux?

Портативного способа сделать это не существует. Существует программа https://github.com/nelhage/reptyr, которая может делать это в Linux (, она использует ptrace и вставляет все системные вызовы ), но я не знаю, насколько она надежна и поддерживается ли она до сих пор. YMMV.

4
23.05.2020, 19:07
3 ответа

Я бы предложил следующую команду:

watch -d "ls -lt /var/log/**/* | head"

watchзапускает следующую команду по умолчанию каждые 2 секунды. Флаг -dвыделяет различия после каждого выполнения.

ls -ltперечисляет файлы в соответствии с датой их последнего изменения (сначала самые новые ), **/*представляет собой глобус для рекурсивного поиска всех файлов.

Наконец, headиспользуется для вывода только первых 10 строк.

4
18.03.2021, 23:34

Вы можете найти недавно обновленные файлы в вашей системе, используя что-то вроде

find / -type f -newermt '-5 minutes'`

Вы можете комбинировать это с отображением размера:

find / -type f -newermt '-5 minutes' -exec stat -c '%10s %n' {} + `
4
18.03.2021, 23:34

как root сделать crontab -eи сделайте что-то вроде

30 * * * * *   /root/checkmydiskspace.sh

, который будет запускать скрипт bash /root/checkmydiskspace.shкаждые полчаса, который вам нужно создать. Посмотрите crontab и решите, нужно ли вам проверять чаще.

Этот сценарий будет таким, и он обязательно выведет информацию, чтобы помочь вам определить, где место на диске со временем расходуется.

#!/bin/bash

now=$(date '+%Y-%m-%d-%H:%M')

filename=wheremydiskspacegone_$now.log

du -sh /* > /root/$filename

Кроме того,chmod 744 /root/checkmydiskspace.sh

просмотрите созданные файлы журналов, узнайте, где что происходит, затем измените du -sh /*, например, на du -sh /usr/*; пройдите в подпапки, где duпоказывает больше всего используемого места.

Конечно, вы можете просто выполнить du -sh /*заранее и посмотреть, в какой папке больше всего вещей, и это, вероятно, виновник. Но со всеми файлами журналов, каждые X минут или сколько угодно, у вас есть все необходимое, чтобы сделать вывод, что конкретно происходит и где. Тогда нужно будет определить, какая программа или процесс вызывает это.

1
18.03.2021, 23:34

Теги

Похожие вопросы