df (disk free) — это команда, которая отображает информацию о свободном и занятом месте на файловых системах. Обычно её используют для быстрого просмотра дискового пространства, но в этой статье мы посмотрим на нестандартное использование команды df в bash-скриптах для автоматизации задач.Базовая команда с примером вывода:
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 50G 30G 20G 60% /
tmpfs 2.0G 1.0M 2.0G 1% /dev/shm
/dev/sdb1 100G 50G 50G 50% /mnt/data
Флаг -h показывает размеры в удобных для чтения единицах (MB, GB).
1. Уведомление при малом свободном месте. Скрипт для проверки свободного места и отправки уведомления, если оно меньше заданного порога.
#!/bin/bash
# Установим порог свободного места (в процентах)
THRESHOLD=80
# Проверяем каждый раздел
df -h | awk 'NR>1 {sub("%", "", $5); if ($5 > ENVIRON["THRESHOLD"]) print $0}' | while read -r line; do
echo "Внимание! Диск переполнен: $line" | mail -s "Диск почти заполнен" admin@bashtex.com
done
Как работает: awk извлекает колонку с использованием (Use%) и сравнивает её с пороговым значением. Если оно превышено, отправляется уведомление.
2. Удаление временных файлов при переполнении. Скрипт для автоматического удаления файлов в /tmp, если свободное место на / меньше 20%.
#!/bin/bash
# Устанавливаем порог
THRESHOLD=20
# Получаем свободное место на /
FREE=$(df / | awk 'NR==2 {sub("%", "", $5); print 100 - $5}')
if [ "$FREE" -lt "$THRESHOLD" ]; then
echo "Мало места на корневом разделе. Удаляю старые файлы в /tmp..."
find /tmp -type f -mtime +7 -delete
echo "Очистка завершена!"
else
echo "Места достаточно: $FREE% свободно."
fi
Как работает: скрипт проверяет, сколько процентов свободного места на корневом разделе, и удаляет файлы старше 7 дней в папке /tmp, если места мало.
3. Мониторинг использования дисков в реальном времени. Скрипт для отображения изменений в свободном месте на диске каждые 5 секунд.
#!/bin/bash
echo "Мониторинг свободного места (каждые 5 секунд):"
while true; do
clear
df -h
sleep 5
done
Как работает: бесконечный цикл обновляет вывод df -h каждые 5 секунд, что позволяет отслеживать изменения в реальном времени.
4. Логирование дискового пространства. Скрипт для записи информации о дисковом пространстве в лог-файл с указанием времени.
#!/bin/bash
LOG_FILE="/var/log/disk_usage.log"
# Логирование состояния дисков
df -h | awk -v date="$(date '+%Y-%m-%d %H:%M:%S')" 'NR==1 {print "Дата:", date; print $0} NR>1 {print}' >> "$LOG_FILE"
echo "Данные записаны в $LOG_FILE"
Как работает: каждая запись логирует текущее состояние дисков с указанием даты и времени. Подробнее о том, зачем это нужно и как применять поговорим завтра.
---
Небольшие советы по использованию df в скриптах:
Используйте флаг -P для более удобного форматирования вывода, если обрабатываете данные через awk или grep.
Комбинируйте df с другими утилитами (find, mail, cron) для автоматизации задач.
Периодически проверяйте скрипты на корректность, чтобы избежать случайного удаления важных данных.
BashTex 📱 #bash #utils