Место для вас

Добавить cron задание в Ubuntu

Cron - это стандартный планировщик задач в Linux. С помощью него вы можете запланировать выполнение команд или скриптов один или несколько раз, в определенную минуту, час, день, неделю и месяц.

Cron очень полезный инструмент в веб разработке. К примеру cron используют при автоматическом резервном копировании или рассылке.

Вот формат cron задания: * * * * * команда_для_запуска
где * - это 'временые' поля

ЗНАЧЕНИЯ 'ВРЕМЕНЫХ' ПОЛЕЙ:

еденица диапазон
минуты число от 0 до 59
часы число от 0 до 23
день месяца число от 1 до 31
номер месяца в году число от 1 до 12
день недели число от 0 до 7
(где 0 - это Воскресение)

ДИАПАЗОН 'ВРЕМЕНЫХ' ПОЛЕЙ:

  • запятая (',') определяет список значений, например: 1,3,4,7
  • тире ('-') определяет диапазон значений, например: 1-5, что эквивалентно 1,2,3,4,5
  • звездочка ('*') определяет все допустимые значения поля. К примеру, звездочка в поле день означает 'каждый день'
  • слэш ('/') используется для пропуска данного числа значений. К примеру, */3 в поле часы эквивалентно строке 0,3,6,9,12,15,18,21 (то есть каждый третий час); но /3 устанавливает использовать только первое, четвертое, седьмое... и так далее значение (то есть через каждые три часа).

Чтобы добавить задание в сron воспользуемся утилитой crontab.

sudo crontab -e -u yourUserName
#где ключ -e говорит о том, что файл будет открыт для редактирования,
#а ключ -u позволяет указать от имени какого пользователя будет происходит выполнение задания

Когда вы добавите задания просто нажмите Ctrl + O для сохранения изменений и Ctrl + X для закрытия редактора. И теперь новые задания cron будут добавлены и активированы.

А для того чтоб увидеть список всех активных заданий наберите:

sudo crontab -l

Если же при выполнении скрипта, который запускается из cron, возникли ошибки, то будет правильно получать сообщения об этих ошибках, чтобы полностью контролировать работу периодически запускаемых заданий. Для этого нужно в начале cron задания поместить строку:

MAILTO=your_email@here.com

А если нужно получать сообщения об ошибках на несколько email адресов, то просто укажите все эти адреса через запятую:

MAILTO=your_email_1@here.com,your_email_2@here.com,your_email_3@here.com,your_email_4@here.com

Бывают случаи, когда ваши скрипты могут выводить какую-то информацию на экран. Чтобы избавиться от вывода этого текста скриптом, вам надо добавить в конец строки-задания: > /dev/null 2>&1

* * * * * home/web/script.php > /dev/null 2>&1

Так же рекомендуется проверять на корректность синтаксиса скриптов, которые вы добавляете в cron. Ведь скрипты могут содержать ошибки, или могут неодинаково работать в зависимости от настроек веб-сервера и так далее. И для того, чтобы убедиться, что скрипт не содержит ошибок и будет правильно работать, то предварительно проверьте его командой:

/usr/local/bin/php -l /path/to/your/script.php

Если ошибок в вашем скрипте не обнаружилось, то вы увидите сообщение "No syntax errors detected in script.php". Это означает, что ваш скрипт не содержит ошибок.

ПРИМЕРЫ КОМАНД CRON ЗАДАНИЙ



#эта команда будет запускать скрипт каждую минуту:
* * * * * /usr/local/bin/check-disk-space.sh

#эта команда будет запускать скрипт в 02:30 каждое 10 число января, июня и декабря
30 2 10 1,6,12 * /home/$user/bin/checkdrive.sh

#эта команда будет запускать скрипт каждые полчаса:
00,30 * * * * /home/$user/backupdata.sh

#эта команда будет запускать скрипт к только по выходным:
* * * * 6,7 /usr/bin/weekend

#эта команда будет запускать скрипт дважды в день в 11:20 и 16:20:
20 11,16 * * * /usr/sbin/command

#кэта команда будет запускать скрипт каждый час каждое 2-е мая.
01 * 2 05 * /sbin/system_command

#эта команда будет запускать скрипт каждые 10 минут во время пяти рабочих дней (понедельник - пятница):
*/10 * * * 1-5 /usr/local/bin/check-disk-space.sh

#эта команда будет запускать скрипт один раз в день с 9 до 17 часов.
00 09-17 * * 1-5 /usr/local/bin/check-disk-space.sh

#эта команда будет запускать скрипт один раз в году, в полночь 1-го января:
0 0 1 1 * /usr/local/bin/check-disk-space.sh

#эта команда будет запускать скрипт дважды в год (каждые 6 месяцев) в 12:00 и в 24:00.
0 0,12 1 */6 * /usr/local/bin/check-disk-space.sh

#эта команда будет запускать скрипт каждый третий четверг любого заданного месяца в 10:00:
0 10 15-21 * 4 /usr/local/bin/check-disk-space.sh

#эта команда будет выполняться каждый день через 20 минут после каждого четного часа (0:20, 2:20...22:20)
20 0-23/2 * * * /usr/local/bin/check-disk-space.sh

ВАЖНО: если определены оба поля 'день месяца' и 'день недели' и они не равны *, то такое задание будет выполняться в каждый указанный день недели независимо от дня месяца.

Например, следующая cron задача будет выполняться в 13 часов 13 минут каждую пятницу и каждое 10 число месяца, даже если 10 число не совпадет с пятницей.


13 13 10 * 5 /home/web/script.php

ЗАПУСК PHP-СКРИПТОВ ПО РАСПИСАНИЮ


* * * * * /usr/local/bin/php /home/web/script.php
* * * * * wget --quiet -O - http://sitename.com/script.php

На этом все. Как видно, cron не такой уж и страшен и сложен, как может показаться. И конечно же у cron имеется еще множество других возможностей. Но для веба мне пока хватало всего перечисленного. Если появится еще что-то интересное, то я обязательно пополню список примерами.

И на закуску. Вот отличнейший сайт, где можно потренироваться с составлением расписаний: http://crontab.guru/


Место для вас

Добавить коментарий

кликните на картинку,
чтоб обновить код

Что за сайт

Этот сайт представляет унифицированную базу, где инфа собрана в единое целое, а не разбросанна по многочисленным сайтам, записям на листах бумаги или головам людей; а так же доступна круглосуточно не зависимо от кого-либо или чего-либо.

Будь в курсе

Интересненько

Вверх