Иногда при работе с сайтом администратору приходится по множеству раз выполнять аналогичные действия. Например, это может быть мониторинг за его доступностью, смена стоимости товаров в каталоге или отдельной категории, переиндексация ссылок, ротация учетных журналов или систематическое архивирование и копирование копии базы данных для последующего восстановления в экстренных ситуациях. Если вы используете Linux Хостинг, то автоматизируйте такие действия через настройку планировщика Cron в Linux.
В Cron в Linux имеется таблица расписания. Она расположена по адресу /etc/crontab. Это небольшой файл, где подробно указан список всех команд и расписан график их последовательного исполнения. Давайте рассмотрим в Linux Cron примеры с параметрами:
SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/
Помимо параметров в файле указывается и расписание, оно находится в следующих строках:
# run-parts 01 * * * * root nice -n 19 run-parts -report /etc/cron.hourly 02 4 * * * root nice -n 19 run-parts -report /etc/cron.daily 22 4 * * 0 root nice -n 19 run-parts -report /etc/cron.weekly 42 4 1 * * root nice -n 19 run-parts -report /etc/cron.monthly
Важно обратить учесть заданные параметры и переменные:
Последние 4 строки из примера показывают таблицу расписания. Из неё следует, что программы, расположенные в каталоге /etc/cron.hourly будут выполняться с регулярностью в 1 час, расположенные по адресу /etc/cron.daily — ежедневно, эти /etc/cron.weekly — раз в неделю, и наконец, находящиеся здесь /etc/cron.monthly — ежемесячно.
Давайте рассмотрим наглядно такой пример. Допустим, требуется ежедневно выполнять команду update_av ftp://server.ru/bases/. В каталоге /etc/cron.daily для этого потребуется создать отдельный файл update_av содержащий:
#!/bin/bash ftp://server.ru/bases/
# chmod +x update_av
Иногда может возникнуть необходимость в создании максимально точного расписания. Для этого нужно разобраться, в Cron Linux как добавить задание такого типа. Для примера давайте возьмем пару программ, одна из которых будет исполняться в 7:00, а другая следом за ней в 7:20. Стандартный сценарий эту проблему решить не сможет, поэтому нужно изучить в каком формате выводятся отдельные элементы нашего расписания:
минуты (0−59) часы (0−23) день (1−31) месяц (1−12), далее идет день_недели (0−6, 0 — Вс), ну и сама выполняемая команда
Для реализации сценария в файл Крон Линукс по адресу etc/crontab потребуется вписать:
0 7 * * * /usr/bin/command1 arguments 20 7 * * * /usr/bin/command2 arguments
В Cron Linux команды описанные выше будут теперь запускаться ежедневно строго по графику — первая в 7:00, вторая в 7:20.
Поняв, как выглядит формат файла crontab, можно легко редактировать и стандартную таблицу расписаний. Изначально в ней заложено, что ежедневные команды запускаются на выполнение в 4:00. Но, если вы отключаете сервер на ночь для экономии расхода электроэнергии, то они не будут выполнены в заданное время. Давайте изменим его на более приемлемое, например, на 9:20 ура. Для этого в таблице расписаний нужно указать:
02 9 * * * root nice -n 19 run-parts -report /etc/cron.daily
Практически точно так же выполняется настройка Cron Linux при необходимости выполнения заданной программы 1 раз еженедельно. Стандартно такие задачи запускаются в 4:22 и
22 8 * * 1 root nice -n 19 run-parts -report /etc/cron.weeklyМожно и вовсе не пользоваться стандартным файлом конфигурации расписания, а изначально сделать свой собственный. Его редактирование выполняется командой crontab -e. При этом редактирование будет проведено под именем текущего пользователя, когда не было указано другого.
Разумеется, администраторы с правами root могут корректировать расписания, созданные под любым именем. Для этого в команду добавляется ещё один параметр -u, например:
crontab -e -u hosting