Большинство системных администраторов стремятся найти самый простой способ решения проблемы, а самый простой способ организовать управление дисковыми квотами — добавить в сценарий fquota (сценарий № 35) рассылку предупреждений по электронной почте пользователям, занявшим слишком большой объем дискового пространства, как показано в листинге 5.3.
Код
Листинг 5.3. Сценарий diskhogs
··#!/bin/bash
··# diskhogs — инструмент анализа расходования дискового пространства для Unix;
··#·· предполагается, что все учетные записи рядовых пользователей
··#·· имеют числовые идентификаторы UID >= 100.
··#·· Рассылает электронные письма с предупреждением всем нарушителям
··#·· и выводит на экран общий отчет.
··MAXDISKUSAGE=500
··do
····# Вам может потребоваться изменить следующий список каталогов, чтобы
····#·· он лучше соответствовал структуре каталогов на вашем диске.
····#·· Наиболее вероятно, что вам придется заменить имя /Users на /home.
····find / /usr /var /Users −xdev −user $name −type f −ls | \
······awk '{ sum += $7 } END { print sum / (1024*1024) }'
··done | awk "\$2 > $MAXDISKUSAGE { print \$0 }" > $violators
····echo "No users exceed the disk quota of ${MAXDISKUSAGE}MB"
····cat $violators
····exit 0
··fi
··while read account usage; do
····Your disk usage is ${usage}MB, but you have been allocated only
····${MAXDISKUSAGE}MB. This means that you need to delete some of your
····files, compress your files (see 'gzip' or 'bzip2' for powerful and
····easy-to-use compression programs), or talk with us about increasing
····your disk allocation.
····Thanks for your cooperation in this matter.
····Your friendly neighborhood sysadmin
··EOF
····echo "Account $account has $usage MB of disk space. User notified."
··done < $violators
··exit 0
Как это работает
При создании этого сценария за основу был взят сценарий № 35. Изменения отмечены номерами
Этот трюк помогает улучшить вид автоматически сгенерированного электронного письма, когда в тексте имеются поля неизвестной длины, такие как $account. Логика работы цикла for
Запуск сценария
Сценарий не имеет аргументов и должен запускаться с привилегиями root, чтобы гарантировать точность результатов. Для большей безопасности желательно запускать сценарий командой sudo, как показано в листинге 5.4.
Результаты
Листинг 5.4. Тестирование сценария diskhogs
$ sudo diskhogs
Account ashley has 539.7MB of disk space. User notified.
Account taylor has 91799.4MB of disk space. User notified.