Обратите также внимание на строку
, где производится запуск всех трех утилит сжатия. Утилиты запускаются параллельно, благодаря использованию завершающего символа &, который перемещает запущенную программу в подоболочку. Последующая команда wait приостанавливает сценарий, пока все запущенные программы не завершатся. В однопроцессорной системе этот прием может не дать существенного прироста производительности, но в многопроцессорной задача будет распределена между несколькими процессами, и ее выполнение теоретически должно завершиться быстрее.
Этому сценарию следует передать список имен файлов для сжатия. Если какой-то из них окажется сжатым и вы хотите попробовать сжать его еще сильнее, используйте флаг −a; иначе сжатые файлы будут пропущены.
Лучше всего продемонстрировать работу сценария на примере сжатия файла, который показан в листинге 4.20.
Листинг 4.20.Вывод команды ls показывает, что в каталоге присутствует файл со сказкой «Алиса в Стране Чудес». Обратите внимание, что файл имеет размер 154872 байт
$ ls −l alice.txt
-rw-r-r- 1 taylor staff 154872 Dec 4 2002 alice.txt
Сценарий скрывает, что сжатие выполняется тремя утилитами, и просто выводит окончательный результат, как показано в листинге 4.21.
Листинг 4.21.Запуск сценария bestcompress для сжатия файла alice.txt
$ bestcompress alice.txt
Best compression is with compress. File renamed alice.txt.Z
Как показано в листинге 4.22, сжатый файл получился намного меньше оригинала.
Листинг 4.22.Размер сжатого файла (66287 байт) значительно уменьшился с размером оригинала, как было показано в листинге 4.20
$ ls −l alice.txt.Z
-rw-r-r- 1 taylor wheel 66287 Jul 7 17:31 alice.txt.Z
Глава 5. Системное администрирование: управление пользователями
Никакая сложная операционная система, будь то Windows, OS X или Unix, не может функционировать бесконечно долго без вмешательства человека. Если вы работаете в многопользовательской системе Linux, значит, кто-то выполняет задачи системного администрирования. Вы можете игнорировать пресловутого «человека за ширмой», управляющего всем и вся, или сами быть великим и могучим волшебником из страны Оз — тем, кто двигает рычаги и нажимает кнопки, чтобы обеспечить нормальную работу системы. Если вы единственный пользователь системы, вам придется регулярно решать задачи системного администрирования самостоятельно.
К счастью, сценарии командной оболочки не в последнюю очередь существуют для того, чтобы упростить жизнь администраторам систем Linux (о чем и пойдет речь в этой главе). Довольно многие команды Linux в действительности являются сценариями, и многие из самых основных задач, такие как добавление пользователей, анализ использования дискового пространства и управление файлами гостевой учетной записи, можно достаточно эффективно решать с помощью коротких сценариев.
Что интересно, многие сценарии, предназначенные для системного администрирования, включают не более 20–30 строк. С помощью команд Linux можно выявить, какие команды являются сценариями, а добавив конвейер — узнать, сколько строк содержит каждый из них. Ниже перечисляется 15 самых коротких сценариев в /usr/bin/ :
$ 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 самых коротких сценариев в каталоге /usr/bin/ не содержит больше 10 строк. И десятистрочный сценарий форматирования формул neqn наглядно демонстрирует, как короткий сценарий командной оболочки может упрощать жизнь пользователям:
#!/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.
Читать дальше