Никакая сложная операционная система, будь то Windows, OS X или Unix, не может функционировать бесконечно долго без вмешательства человека. Если вы работаете в многопользовательской системе Linux, значит, кто-то выполняет задачи системного администрирования. Вы можете игнорировать пресловутого «человека за ширмой», управляющего всем и вся, или сами быть великим и могучим волшебником из страны Оз — тем, кто двигает рычаги и нажимает кнопки, чтобы обеспечить нормальную работу системы. Если вы единственный пользователь системы, вам придется регулярно решать задачи системного администрирования самостоятельно.
К счастью, сценарии командной оболочки не в последнюю очередь существуют для того, чтобы упростить жизнь администраторам систем Linux (о чем и пойдет речь в этой главе). Довольно многие команды Linux в действительности являются сценариями, и многие из самых основных задач, такие как добавление пользователей, анализ использования дискового пространства и управление файлами гостевой учетной записи, можно достаточно эффективно решать с помощью коротких сценариев.
Что интересно, многие сценарии, предназначенные для системного администрирования, включают не более 20–30 строк. С помощью команд Linux можно выявить, какие команды являются сценариями, а добавив конвейер — узнать, сколько строк содержит каждый из них. Ниже перечисляется 15 самых коротких сценариев в
$ file /usr/bin/* | grep "shell script" | cut −d: −f1 | xargs wc −l \
| sort −n | head -15
···· 3 zcmp
···· 3 zegrep
···· 3 zfgrep
···· 4 mkfontdir
···· 5 pydoc
···· 7 sgmlwhich
···· 8 batch
···· 8 ps2pdf12
···· 8 ps2pdf13
···· 8 ps2pdf14
···· 8 timed-read
···· 9 timed-run
····10 c89
····10 c99
····10 neqn
Ни один из 15 самых коротких сценариев в каталоге
#!/bin/bash
# Присутствие этого сценария не должно расцениваться как наличие поддержки
#·· GNU eqn и groff −Tascii|-Tlatin1 |-Tutf8 |-Tcp1047.
: ${GROFF_BIN_PATH=/usr/bin}
PATH=$GROFF_BIN_PATH:$PATH
export PATH
exec eqn −Tascii ${1+"$@"}
# eof
Сценарии, которые будут представлены в этой главе, такие же короткие и полезные, как neqn, и помогают решить множество административных задач, включая резервное копирование системы, добавление и удаление учетных записей и пользовательских данных, управление учетными записями. Также вы получите простой и удобный интерфейс к команде date, изменяющий текущие дату и время, и инструмент для проверки файлов crontab.
№ 35. Анализ использования дискового пространства
Даже с появлением очень емких жестких дисков и постоянным уменьшением цен на них системным администраторам постоянно приходится следить за использованием дискового пространства, чтобы общедоступные диски не переполнились.
Наиболее типичным приемом мониторинга является исследование каталога
Лучшее решение — получить имена всех учетных записей непосредственно из файла
Код
Листинг 5.1. Сценарий fquota
#!/bin/bash
# fquota — инструмент анализа расходования дискового пространства для Unix;
#·· предполагается, что все учетные записи рядовых пользователей
#·· имеют числовые идентификаторы UID >= 100