Ликбез по Linux
08.04.2011
—
Новости Hi-Tech
|
Статья про утилиту резервного копирования rsync ("КВ" №
Знакомясь с системными утилитами cron, anacron и at, не будем слишком много философствовать. Хотя бы потому, что сами по себе эти консольные программы представляют собой классические образчики UNIX-философии, и даже простое знакомство с ними может привести к нирване и просветлению. Утилиты cron, anacron и at - это планировщики заданий, и они предназначены для того, чтобы автоматизировать запуск отложенных задач в нужное время. Такими задачами могут быть как простые текстовые напоминания для пользователя, так и сложные задачи системного администрирования - например, резервного копирования, с азами которого мы уже знакомились. Обычно эти три консольные утилиты уже должны присутствовать в вашей системе GNU/Linux. Эти программы в первую очередь предназначены для сисадминов. И в былые времена доступ обычного пользователя к ним даже ограничивался. Но сейчас, имея на персональном компьютере собственную систему Linux, каждый пользователь может воспользоваться их мощью. Различие между этими тремя утилитами состоит только в способе организации расписания для отложенного запуска задач. Если кратко, то cron позволяет запускать задачи точно по времени, anacron обеспечивает периодическое выполнение, а at организует одноразовую очередь выполняемых заданий. А теперь рассмотрим более подробно каждую утилиту по отдельности.
Начнём с cron (Command Run ON). Говоря по-научному, cron - это планировщик задач в UNIX-подобных операционных системах для периодического и непериодического выполнения заданий. А проще говоря, cron запускает программы по указанному пользователем специальному расписанию. Cron работает в режиме демона, регулярно читая специальные файлы crontab, в которых и содержатся записи о задачах и о времени их выполнения. После того, как демон cron запущен и прочел содержимое всех файлов crontab, он каждую минуту проверяет, не требуется ли запуск какой-либо команды. Каждый пользователь в системе имеет свой собственный файл заданий crontab. А все вместе эти файлы находятся в специальном каталоге. Например, в Ubuntu это каталог /var/spool/cron/crontabs. Суперпользователь root имеет особые возможности при работе с cron. Его файл отложенных задач находится в файле /etc/crontab. Также пользователь root имеет доступ к специальным папкам /etc/cron.daily, /etc/cron.weekly, /etc/cron.monthly. Для работы со своими файлами заданий необходимо пользоваться специальной утилитой, которая также называется crontab. Например, для редактирования своего собственного файла crontab используется команда: crontab -e В результате файл заданий откроется в консольном текстовом редакторе для редактирования. При первом запуске этой команды может быть предложено выбрать редактор из некоторого списка установленных в системе текстовых редакторов. Первоначально в этом файле, кроме комментариев, помеченных символом "#", ничего быть не должно. Задания для cron нужно записывать в виде текстовой строки специального формата. Эта запись в общем случае состоит из шести полей, разделённых между собой пробелом или табуляцией: [минута] [час] [день] [месяц] [день недели] [выполняемая команда] Для суперпользовательского файла /etc/crontab предусмотрено ещё седьмое поле, позволяющее запускать задание от имени любого обычного пользователя системы. То есть это очень интуитивно понятный формат. Например: 13 13 13 * 5 rsync -a work backup В данном случае запись означает, что каждую пятницу, выпадающую на 13-е число, в 13 часов 13 минут будет выполняться резервное копирование из папки work в папку backup посредством утилиты rsync. Приведу допустимые значения для каждого из полей времени:
В качестве значений дня недели или месяца можно использовать трёхбуквенные значения на латинице. Однако в нашем примере мы видим вместо некоторых значений звёздочки. Это значит, что вместо конкретных значений времени можно использовать шаблоны. Допускаются следующие шаблоны:
Таким образом, в задании можно очень гибко задавать время выполнения заданий. Примеры: #Напоминание о важном событии * 9 5,20 * * echo "Сегодня получка" #Каждый четный час, каждый понедельник будет выполнен script * 0-23/1 * * 1 script #Поздравит с новым годом 59 23 31 dec * echo "Happy NY!" Чтобы просто просмотреть список заданий, совсем не нужно открывать файл crontab в режиме редактирования. Для этого можно запустить команду crontab с параметром "-l". Если нужно удалить свой crontab, то для этого имеется параметр "-r".
Anacron (anachronistic cron) - это системный демон, который может запускать задания исключительно с определенным интервалом времени. В отличие от cron, не поддерживает запуск заданий по расписанию и не позволяет устанавливать точную дату запуска задачи. Anacron, в отличие от cron, значительно беднее по возможностям настройки. Имеет основной файл заданий /etc/anacrontab. Формат записи задания имеет четыре поля: [период] [задержка] [идентификатор] [команда] Период - период выполнения в сутках. Задержка - задержка запуска в минутах. Идентификатор задания - любые непустые символы. Например, еженедельный бэкап из папки work в папку backup может выглядеть так: 7 15 week_backup rsync work backup Особенность работы anacron в том, что этот планировщик обязательно сработает после перерыва в работе компьютера. При запуске anacron проверит, прошло ли необходимое количество дней с тех пор, как задача была выполнена в последний раз. Если дней прошло больше, чем указано в поле "период", например, если компьютер был выключен, команда будет тут же выполнена. Отсюда и необходимость параметра "задержка": чтобы в случае включения дать компьютеру полностью спокойно загрузиться, а уже затем выполнить задачи для anacron.
И последняя на сегодня утилита at предназначена для одноразового планирования выполнения команд. Команда at позволяет вам указывать точное время выполнения команд, а также создавать очередь из нескольких заданий. Команда at запускается с параметром времени выполнения задания. Например: at 10:30 После чего появится приглашение для записи команд. После набора очередной команды нужно нажимать <Ввод>, а набор всей очереди команд нужно завершить комбинацией клавиш <Ctrl+D>. После этого at выведет в консоль номер этого задания, время и дату его выполнения. Аргумент времени задаётся в виде двух чисел через двоеточие - часы:минуты. По умолчанию время считается заданным в 24-часовом формате. Что же касается даты выполнения, то по умолчанию предполагается текущий день. Дату выполнения можно задавать через знак плюс (+) с последующим указанием количества дальнейших минут, часов, дней, недель, месяцев и даже лет. Для этого надо использовать суффиксы minutes, hours, days, weeks, months, years. Примеры: at 12:00 + 1 week at 22:10 + 4 day Чтобы просмотреть все текущие очереди, нужно воспользоваться опцией "-l" в команде at. Для удаления очереди нужно воспользоваться опцией "-r", указав также номер задания.
Для работы с консольными планировщиками существует графическая оболочка Gnome Schedule tasks. Эта утилита с несложным интерфейсом позволяет более просто вводить параметры даты и времени для cron и at. Единственный момент, который требует пояснений: здесь при выборе задания через кнопку "создать" предлагаются типы заданий, а не сами утилиты планирования. Но по названию типов можно догадаться, какая утилита-планировщик будет использована
Кнопка "a task from predefined template" - выбрать ранее созданный шаблон из какой-нибудь задачи. Можно порекомендовать Gnome Schedule не только для большего удобства при работе с cron или at, но и для более лёгкого запуска программ с графическим интерфейсом. Так как такие программы требуют дополнительных параметров запуска, что для новичков может оказаться поначалу затруднительным. Михаил АСТАПЧИК Чтобы разместить новость на сайте или в блоге скопируйте код:
На вашем ресурсе это будет выглядеть так
С помощью планировщиков заданий можно автоматизировать разовое или периодическое выполнение той или иной программы
|
|