Рубрики
Uncategorized

Контролировать использование дискового пространства с bash

Введение, если вы когда-либо имели дело с сервером Linux, который был вне дискового пространства в … Помечено Linux, Bash, мониторинг, Devops.

Вступление

Если вам когда-нибудь приходилось разобраться с сервером Linux, который был вне дискового пространства в какой-то момент, вы знаете, что важно снова не бегать в ту же ситуацию. В большинстве случаев сервер может выходить из дискового пространства из-за огромных файлов сеанса или даже файла журнала ошибок, растущего до сотен гигабайт.

Тем не менее, иногда вы можете получить знаменитое сообщение «Нет, оставленное на устройстве», не зная, что делает дисковое пространство. С несколькими простыми командами Bash вы можете быстро проверить, какие папки и файлы являются наиболее дисковым пространством, потребляющим в вашей системе

Сводное изложение сценариев

Первый шаг, который вы можете выполнить, если вы испытываете эту проблему, проверьте использование дискового пространства на вашем сервере, используя DF Отказ Команда отображает количество дискового пространства, доступного в файловой системе, содержащей каждый аргумент имени файла.

Получите представление о том, что вывод команды здесь является примером. Мы также добавим -h Аргумент или —human — читаемый для получения более красивого выхода команды.

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        2.0G     0  2.0G   0% /dev
tmpfs           2.0G     0  2.0G   0% /dev/shm
tmpfs           2.0G  209M  1.8G  11% /run
tmpfs           2.0G     0  2.0G   0% /sys/fs/cgroup
/dev/xvda        30G   12G   16G  43% /
tmpfs           400M     0  400M   0% /run/user/0

Как вы можете увидеть использование дискового пространства совершенно нормально, и мы далеко от пробега к проблемам на данный момент. Тем не менее, это может быстро измениться, если мы сделаем большую резервную копию нашего приложения или веб-сайта или, как уже упоминалось, папка сеанса значительно растет, или если мы просто модифицируем наш код, и это вызывает ошибку, которая затем входит в систему, а затем error_log может расти довольно быстро.

С DF Команда мы можем быстро проверить, было ли превышено дисковое пространство на / раздел или например, если /TMP. или /var Раздельные разделы дискового пространства можно превышать там, если присвоенное количество дискового пространства не было достаточным или если бы просто некоторые из плохих сценариев, которые мы уже упоминали, произошли.

Другая полезная команда, которую мы можем использовать для определения размещения использования файловых пространств IS дурак . Вы можете быстро проверить, какими являются самые дисковые космосные каталоги на вашем сервере. Пример команды будет следующим:

du -ch --max-depth=2 / 2>/dev/null | sort -rh | head -15

Где: -C будет производить грандиозное общее использование диска, -h снова для читаемого человеком выходов.

Где: -h предназначен для читаемого человеком выхода.

Мы также применяем -макс-глубина Уровень, чтобы указать, что мы хотим, чтобы наша команда проверить использование диска на определенных уровнях ниже отправной точки, которая в этом случае будет / раздел.

Затем мы указываем, что мы хотим выполнить проверку на / каталог, и мы также хотим фильтровать любые ошибки, используя 2>/dev/null Так что они не будут выводиться на вашу консоль.

Последний бит, который мы хотим, чтобы сортировать ( -H предназначен для читаемого человеком, а аргумент -R аргумент — просто обратить вспять результат сравнения) вывода и перечислять первые 15 рядов выход.

Наконец, мы просто хотим отображать первые 15 строк вывода с голова команда.

Пример вывода команды будет

du -ch --max-depth=2 / 2>/dev/null | sort -rh | head -15
14G     total
14G     /
4.7G    /usr
4.3G    /var
2.2G    /usr/local
1.3G    /var/lib
1.3G    /root

Чтобы найти самые большие по размеру файлов в нашей системе, мы будем использовать Найти команда.

Найти Иногда может быть довольно жестким и может вызвать проблемы с превышением памяти на вашем сервере и из-за этого мы хотели бы использовать Хороший Команда также для того, чтобы убедиться, что все будет гладко. Короче говоря, вы будете использовать приятно, чтобы запустить программу с модифицированным приоритетом планирования. Значения хорошей ценности варьируются от -20 (наиболее благоприятно для процесса) до 19 (наименее благоприятной для процесса).

Мы также можем использовать Ionice вместо Хороший Для того, чтобы установить другой тип приоритета. Эта программа устанавливает или получает класс планирования ввода/вывода и приоритет программы.

Затем с помощью простой команды поиска мы ищем файлы, которые больше 100 МБ, и мы также оценим использование файлового пространства

Примерные команды:

nice -n 19 find / ! -path "/proc/*" -type f -size +100M -exec du -hs {} \; | sort -hr
ionice -n 3 -c 3 2>/dev/null find / ! -path "/proc/*" -type f -size +100M -exec du -hs {} \; | sort -hr

Сценарий

Теперь мы хотим объединить команды в простом скрипте Bash вместо того, чтобы запустить их как автономные одноклассники, и, конечно, мы можем изменить весь сценарий в одном большом сценарии одноклассника, но я думаю, что это полностью зависит от вас, если вы хотите Выполните один и тот же вкладыш снова и, возможно, сохраните его в своем .bashrc и используйте его с псевдонимом или практикуйте свой Bash и поместите команды в простом скрипте.

Мы можем распечатать дату в начале скрипта для видимости (вы также можете сделать сценарий запускать задание CRON, а также отправить вам электронное письмо раз в неделю с использованием дискового пространства или установить триггер, если использование более 90% ) А также очистить экран, чтобы получить более хороший вывод, однако это не обязательно. Мы также можем определить путь для сканирования в переменной просто для практики этого, хотя сценарий становится больше, поэтому вы можете просто поставить путь как «/», а не сохранить его в переменной.

Последний скрипт будет выглядеть так:

#!/bin/bash
## Define the path for the scans
DIR_TO_CHECK='/'

clear
date
printf "======================================================\n"
# Get a report for the file system usage
df -h
printf "======================================================\n"
printf "LARGEST DIRECTORIES\n"
printf "\n"
# Get a report for the most disk space consuming directories in the / partition 
du -ch --max-depth=2 ${DIR_TO_CHECK} 2>/dev/null | sort -rh | head -15
printf "======================================================\n"
printf "LARGEST FILES\n"
printf "\n"
# Get a list for all files larger than 100MB in the / partition
ionice -n 3 -c 3 2>/dev/null find ${DIR_TO_CHECK} ! -path "/proc/*" -type f -size +100M -exec du -hs {} \; | sort -hr
printf "=======================================================\n"

Заключение

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

clear ; printf "LARGEST DIRECTORIES\n"; printf "\n"; du -ah --max-depth=2 / 2>/dev/null | sort -rh | head -20 | grep [0-9]G; printf "\n"; printf "LARGEST FILES\n" ; ionice -n 3 -c 3 2>/dev/null find / ! -path "/proc/*" -type f -size +100M -exec du -hs {} \; | sort -hr

Вы также можете проверить страницы человека для команд, которые мы использовали в нашем скрипте:

man df
man du
man find
man sort
man head
man ionice
man grep

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

Пожалуйста, не стесняйтесь поделиться, если вы также используете основные сценарии для мониторинга использования дискового пространства на серверах.

Служба поддержки

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

Спасибо!

Оригинал: «https://dev.to/alexgeorgiev17/monitor-disk-space-usage-with-bash-4mbk»