Читаем Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание полностью

··back1="${name}.1"; back2="${name}.2";

··back3="${name}.3"; back4="${name}.4";

··# Если самый свежий архив журнала (back1) изменялся не позднее

··#·· заданного промежутка, значит, время ротации еще не подошло. Это

··#·· можно определить командой find с флагом −mtime.

··if [-f "$back1"]; then

····if [-z "$(find \"$back1\" −mtime +$duration −print 2>/dev/null)"]

····then

······/bin/echo −n "$name's most recent backup is more recent than $duration "

······echo "days: skipping"; continue

····fi

··fi

··echo "Rotating log $name (using a $duration day schedule)"

··# Ротация начинается с самого старого архива, но будьте осторожны,

··#·· так как некоторые файлы могут просто отсутствовать.

··if [-f "$back3"]; then

····echo"… $back3 — > $back4"; $mv −f "$back3" "$back4"

··fi

··if [-f "$back2"]; then

····echo"… $back2 — > $back3"; $mv −f "$back2" "$back3"

··fi

··if [-f "$back1"]; then

····echo"… $back1 — > $back2"; $mv −f "$back1" "$back2"

··fi

··if [-f "$name"]; then

····echo"… $name — > $back1"; $mv −f "$name" "$back1"

··fi

··touch "$name"

··chmod 0600 "$name" # Последний шаг: изменить права файла на rw-························для безопасности

done

if [$count −eq 0]; then

··echo "Nothing to do: no log files big enough or old enough to rotate"

fi

exit 0

Для максимальной пользы сценарий работает с конфигурационным файлом, который находится в каталоге /var/log, позволяя администратору определять разные периоды ротации для разных файлов журналов. В листинге 6.13 показано содержимое типичного конфигурационного файла.

Листинг 6.13. Пример конфигурационного файла для сценария rotatelogs

# Конфигурационный файл для сценария ротации файлов журналов:···· Формат name=duration,

#·· где name может быть именем любого файла в каталоге /var/log, а duration

#·· измеряется в днях.

ftp.log=30

lastlog=14

lookupd.log=7

lpr.log=30

mail.log=7

netinfo.log=7

secure.log=7

statistics=7

system.log=14

# Файлы с периодом ротации, равным нулю, игнорируются.

wtmp=0

<p>Как это работает</p>

Основу и, пожалуй, самую замысловатую часть сценария составляет команда find . Она возвращает все файлы в каталоге /var/log с размером больше нуля, имена которых не содержат цифр, не начинаются с точки (OS X, например, создает в этом каталоге массу файлов журналов с бессмысленными именами, и их все следует пропустить) и не заканчиваются расширением conf (вполне очевидно, что не имеет смысла выполнять ротацию нашего конфигурационного файла rotatelogs.conf). Параметр maxdepth 1 гарантирует, что find не будет выполнять поиск в подкаталогах, а команда sed в самом конце удалит все ведущие последовательности./ из найденных совпадений.

ПРИМЕЧАНИЕ

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

<p>Запуск сценария</p>
Перейти на страницу:

Все книги серии Для профессионалов

Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание
Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание

Сценарии командной оболочки помогают системным администраторам и программистам автоматизировать рутинные задачи с тех самых пор, как появились первые компьютеры. С момента выхода первого издания этой книги в 2004 году многое изменилось, однако командная оболочка bash только упрочила свои лидирующие позиции. Поэтому умение использовать все ее возможности становится насущной необходимостью для системных администраторов, инженеров и энтузиастов. В этой книге описываются типичные проблемы, с которыми можно столкнуться, например, при сборке программного обеспечения или координации действий других программ. А решения даются так, что их легко можно взять за основу и экстраполировать на другие схожие задачи.Цель этой книги — продемонстрировать практические приемы программирования сценариев на bash и познакомить с самыми распространенными утилитами на коротких и компактных примерах, не вдаваясь в излишние подробности. Экспериментируйте с этими сценариями — ломайте, исправляйте и приспосабливайте их под свои нужды, чтобы понять, как они работают. Только так вы сможете решать самые сложные задачи.

Брендон Перри , Дейв Тейлор

Программирование, программы, базы данных

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных