Cron — UNIX-программа, которая используются для периодического выполнения заданий в определённое время. Расписание и действия описываются инструкциями в файлах crontab, их можно посмотреть через SSH, командой:
crontab -l
Файл с заданиями, выглядит примерно так:
crontab -l
* * * * * /usr/local/script.sh
o */2 * * * /Usr/local/bin/wget -O - -q "https://example.com/update.php"
Для редактирования используется команда:
crontab -e
Редактирование в консоле крайне не удобно, поэтому на большинстве хостингов имеется web-интерфейс, что достаточно упрощает настройку, например, Masterhost.ru:
Или Timeweb.ru:
Команды делятся на две части – временной интервал и команда:
[минута] [час] [день месяца] [месяц] [день недели] [пользователь] [команда]
В большинстве хостингах «Пользователь» не доступен, далее в примерах он не указан.
Минуты
Задается числом от 0
до 59
.
Каждую минуту:
# Минута Час День Месяц День недели
* * * * *
Каждую чётную минуту:
# Минута Час День Месяц День недели
0-59/2 * * * *
Каждую нечётную минуту:
# Минута Час День Месяц День недели
1-59/2 * * * *
Каждые 10 минут:
# Минута Час День Месяц День недели
*/10 * * * *
Часы
Задаются числом от 0
до 23
.
Каждый час:
# Минута Час День Месяц День недели
0 */1 * * *
Каждые 3 часа:
# Минута Час День Месяц День недели
0 */3 * * *
Каждый день, в 12:00:
# Минута Час День Месяц День недели
0 12 * * *
Несколько раз в день (6:00, 12:00, 18:00):
# Минута Час День Месяц День недели
0 6,12,18 * * *
Дни
Дени месяца, от 1
до 31
.
1-го и 15-го числа, в 9:00:
# Минута Час День Месяц День недели
0 9 1,15 * *
Дени недели
Задаются последним параметром: 1
- пн., 2
- вт., 3
- ср., 4
- чт., 5
- пт., 6
- сб., 0
или 7
- вс.
Каждый понедельник, в 6:30:
# Минута Час День Месяц День недели
30 6 * * 1
Каждый рабочий день в 9:00:
# Минута Час День Месяц День недели
0 9 * * 1-5
Несколько раз в неделю (понедельник, четверг):
# Минута Час День Месяц День недели
0 9 * * 1,4
Месяцы
Задаются числом от 1
до 12
.
Раз в месяц (9:00, первого числа):
# Минута Час День Месяц День недели
0 9 1 * *
В новый год:
# Минута Час День Месяц День недели
59 23 31 12 *
Константы
Для удобства доступны следующие константы:
@reboot
– при перезагрузки@yearly
,@annually
– раз год@monthly
– раз в месяц@weekly
– раз в неделю@daily
,@midnight
– каждый день@hourly
– каждый час
Запустить bash-скрипт:
* * * * * /usr/local/script.sh
Запустить PHP-скрипт:
* * * * * /usr/local/bin/wget -O - -q "https://example.com/update.php"
Добавить директорию в архив:
* * * * * zip -r /home/backup.zip /home/site/www
Удалить файлы из директории:
* * * * * rm -rf /tmp/folder/*
Будьте осторожны при использовании команды rm -rf
, перед её использованием сделайте резервную копию файлов.
Сделать бэкап БД в архиве ZIP:
* * * * * mysqldump -uЛОГИН -hХОСТ -pПАРОЛЬ НАЗВАНИЕ_БД | gzip > /home/backup-`date +\%Y_\%m_\%d`_sql.gz