Как проверить работу cron на хостинге?
Добавил задачу в планировщик на хостинге. Горит галочка что работает, интересует убедиться что он действительно работает. Как это можно сделать?
Отслеживать
задан 19 окт 2020 в 12:14
23 6 6 бронзовых знаков
Прописать запись чего-нибудь в какой-нибудь файл и проверить, что файл действительно записался?
19 окт 2020 в 12:17
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
1. Можно посмотреть в syslog что он отрабатывает, например:
# cat /var/log/syslog | grep CRON | tail Oct 19 15:09:01 G5070 CRON[4412]: (root) CMD ( [ -x /usr/lib/php/sessionclean ] && /usr/lib/php/sessionclean) Oct 19 15:15:01 G5070 CRON[4528]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1) Oct 19 15:17:01 G5070 CRON[4572]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly) Oct 19 15:25:01 G5070 CRON[4661]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1)
2. Самому логировать
Например, создать файл cron_log.txt
А в ваш скрипт в конце добавить команду, которая например пишет дату время в cron_log.txt.
Пример:
$ crontab -l * * * * * my_cron_script.sh
$ cat my_cron_script.sh date >> cron_log.txt
Как проверить, работает ли задача cron
Решил написать эту заметку, чтобы не потерялась информация.
Как известно, на Инстанте можно запустить задачу cron, начиная с версии 1.7 (если правильно помню). Задача запускается с сервера и может быть выполнена, даже если никого на сайте нет.
Как задача выполняется.
Начинает эту задачу сервер, в том случае, если на нем есть Планировщик заданий cron. Этот Планировщик может выполнить любой скрипт вашего сайта по своему расписанию.
Другими словами, если вы собираетесь организовать выполнение на своем сайте какого-то своего скрипта по расписанию, вы должны настроить две независимые вещи:
1. Планировщик заданий на хостинге.
2. Задачу CRON на Инстанте.
Обычно мы настраиваем Планировщик так, чтобы указать путь к нашему инстантовскому скрипту cron.php (есть и на Первой и на Второй ветках), который лежит в корне сайта. Однако мы можем прописать Планировщику любой скрипт.
Настройки
Настройка Планировщика заданий на хостинге
Это самая муторная часть настроек задачи cron. Почему? Потому что на каждом хостинге «свои игрушки» — совершенно разные способы запуска скриптов и разные пути к интерпретатору php и разные пути к вашему сайту.
Если вы неправильно пропишите это задание для Планировщика — вы будете долго ломать голову, из-за чего возникли траблы и на каком этапе.
Поэтому рекомендую не кичиться своей квалификацией программиста и сайтоваятеля. Смело пишите в саппорт хостинга. Попросите их прислать пример строки для Планировщика заданий. В ответ они вам пришлют либо такую строку
либо такую
либо такую
Все строки рабочие, только с разных хостингов. Совершенно не похожи между собой, правда? Именно поэтому не старайтесь скопировать эту строку с одного хостинга на другой, чтобы потом не удивляться, почему CRON не работает. В примерах Планировщика задач обычно есть справка. Те справки, что я до сих пор читал, были написаны на марсианском языке. Иногда буквы русские, но язык все равно марсианский. Поэтому не ковыряйтесь в дурацких справках, а сразу пишите в саппорт!
По виду строки для Планировщика (в ответе из саппорта) можно догадаться, как именно будет запускаться ваша задача cron. Если используется не cli, а wget или cURL, вам придется открыть наш инстантовский файл cron.php любым редактором и закомментировать строку
Если этого не сделать, задача cron не сработает, даже если Планировщик настроен правильно. (Говорю для тех, кто в танке: закомментировать строку означает поставить перед ней // — две косые черты, или слэша)
Предопределенная константа PHP_SAPI объявляется ядром php на хостинге вместе с другими константами. О том, как узнать ее значение, чуть ниже.
Немного справочной информации
CLI — Command line interface, интерфейс командной строки. Рассмотрим пример, относящийся к cli.
Еще раз посмотрите на строку
Эта строка конфигурации /etc/crontab. Строка состоит из имени команды, необязательных ключей и необязательных параметров. Если есть ключи и/или параметры, они отделяются от команды и друг друга обязательными пробелами.
В данном примере строка конфигурации Crontab начинается с пяти звездочек. Подробнее о настройке временных значений, диапазонов или перечней читайте чуть ниже.
Далее через пробел идет путь к интерпретатору php. Это очень важный параметр. Если вы указали путь неправильно — ваша задача cron не сработает. Именно этот путь вам и надо «выжать» из Вашего саппорта. Потому что практика показывает, что люди, сидящие в саппорте, часто сами не знают этого пути. Они пишут в ответ всякую фигню. Просите их пригласить к разговору человека квалифицированного. Обычно это админ сервера. Только когда к переписке подключится админ сервера, только тогда вы получите нужные сведения.
После параметра «путь» через пробел стоит ключ -n, который отключает запуск ionCube. Если ваш запускаемый скрипт зашифрован ionCube, этот ключ следует убрать. Как получить описания ключей? У себя дома (на Денвере) я нашел перечень этих ключей (их двенадцать) с описаниями на английском, набрав в командной строке z:\usr\bin\php.exe -h
Для тех, кто в танке, подсказываю, что в Винде командная строка вызывается cmd.exe, будучи набранной в поле «Выполнить» (для ХР), и в поле «Найти программы» (для Семерки). Поле «Выполнить/Найти» можно открыть в любой Винде, нажав комбинацию клавиш «Win+R». У кого вместо Денвера стоит Open Server, предупреждаю, что файл php.exe может находиться и по другому адресу (в этом случае юзайте поиск).
Ну, и наконец, последний, тоже невероятно важный параметр командной строки для cli — путь к исполняемому скрипту. В данном примере, естественно, указан наш инстантовский cron.php. Вы можете запустить таким образом любой файл. Пример этого чуть ниже.
WGET — википедия вещает нам, что это свободная неинтерактивная консольная программа для загрузки файлов по сети. Вот почему во втором примере в качестве параметра указано сетевое имя вашего сайта с протоколом http:// Эта программа также поддерживает протоколы https:// и ftp://
Там же, в википедии, я нашел несколько примеров ключей.
cURL — хорошая альтернатива wget. Делает все тоже самое, что делает wget, плюс еще много чего. Смотрите википедию.
Если саппорта нет (или он несет фигню)
Но как быть, если строка Планировщика не работает, а саппорт высокомерно молчит? Или дятлы, засевшие в саппорте деревянного хостинга, несут ахинею? Например, направляют вас на тот самый FAQ (на марсианском языке), который вы уже и так вдоль и поперек изучили?
Поневоле приходится справляться самому.
Здесь приведен способ самостоятельно узнать, правильно ли Вы настроили Планировщик.
1. В корне сайта создайте два файла:
my_cron.txt с правами 777.
my_cron.php с правами 755 или 751
Первый файл my_cron.txt (это наш лог, куда скрипт будет писать сообщения) оставьте пустым.
Второй файл my_cron.php откройте в редакторе и впишите примерно такой текст:
Как Вы уже поняли, команда fopen(‘path_to_log’) содержит путь к логу. Часто этот путь следует указывать от корня хостинга (а не корня сайта). Естественно, на каждом хостинге (и для каждого Вашего сайта, если их несколько) этот путь будет различным.
2. Начинаем эксперименты. В Панели управления хостинга ищите Планировщик заданий (он может называться по разному). Настраиваете Планировщик заданий. Как правило, для этого в него надо добавить строку, которую вы составили по примерам, приведенным в FAQ вашего хостинга.
Например:
Некоторые Панели управления хостингом (например, ISP) содержат кнопку для задачи cron «Запустить задачу». Если кнопки «Запустить задачу» нет, пропускаете пункт 2.1. Сразу переходите к п.3.
2.1.Если кнопка есть, нажмите на нее. Если вернулась белая страница, без всяких ответов, порадуйтесь первой победе и переходите к п.3. Если при нажатии на кнопку «Запустить задачу» появляется короткая строка вроде
значит, вернуло ошибку с кодом 123 и Планировщик не работает. Нет смысла двигаться дальше, пока есть ошибка. По коду можно узнать, что пошло не так: пишите этот код саппорту.
3. Настроив Планировщик, идите перекусите. Чаю попейте.
4. Попив чаю, заглядываете в файл my_cron.txt. Если Планировщик сработал, он запустит на выполнение Ваш скрипт my_cron.php.
Приведенный выше пример запускает скрипт my_cron.php каждую минуту. Он пишет в лог my_cron.txt строчки вроде
Если видите аналогичные строчки, радуйтесь — Планировщик работает. Первая часть задачи выполнена.
Если лог пуст — значит Планировщик не работает. Вернитесь к п.2. Экспериментируйте с путями. Возможно, неправильно прописаны пути к интерпретатору php или вашему скрипту. Как их узнать? Узнать этот путь можно из phpinfo(). Для этого идите в админку Настройки -> Информация PHP.
Только когда в логе что-то появилось, имеет смысл двигаться дальше.
5. Остальное дело техники.
5.1. Следует удалить файлы my_cron.txt и my_cron.php, из корня сайта, чтобы они не лежали там в виде мусора.
5.2. Затем отредактируйте командную строку Планировщика, чтобы вместо нашего тестового скрипта my_cron.php был прописан скрипт Инстанта cron.php.
5.3. Скорее всего, придется еще перенастроить время срабатывания Планировщика.
Звездочки, которые мы видим, обозначают:
Минуты Часы Дни_месяца Месяц День_недели
Вместо звездочек можно ставить точные цифровые значения, диапазон или перечень. Диапазон указывается через дефис (например, 1-4 означает 1,2,3,4), перечень указывается через запятую, например, 1,2,3,4)
Примеры настроек временных интервалов Планировщика
каждый час (точнее, каждую нулевую минуту, которая раз в час бывает):
или
каждые полчаса (точнее, каждую нулевую и тридцатую минуту):
или
каждый день (точнее, каждый нулевой час, сиречь полночь):
или
каждый день в 8:15 утра:
или
каждое воскресенье в 12:00
и так далее. Думаю, теперь понятно.
Иногда вместо звездочек для каждого часа следует прописывать @hourly, каждый день — @daily и так далее. Я же говорю — не пытайтесь угадать, как должна выглядеть правильная строка планировщика, а сразу пишите в саппорт!
Только после того, как Планировщик задач на хостинге заработал и Вы его настроили, можно перейти к следующей части — настройки CRON на Инстанте.
Если задача CRON движка все равно не запускается
Иногда бывает, что Планировщик на хостинге срабатывает, наш тестовый скрипт my_cron.php успешно пишет в лог, а задача cron все равно не выполняется. И Первая и Вторая ветки в корнях содержат файл cron.php. Одна из первых строчек этого файла выглядит так:
Как мы видим здесь проверяется значение предопределенной константы PHP_SAPI. Эта константа объявляется самим ядром PHP на хостинге и переопределить мы ее не можем. Зато можем узнать ее значение. Это можно сделать несколькими способами. Выбирайте любой, какой вам больше нравится.
Как узнать значение PHP_SAPI
1. Записать в лог. Аналогично, как мы делали выше, но в в файл my_cron.php добавляем строчку
2. Вывести в браузер. В любом месте файла index.php (как Первой, так и Второй ветки, находится в корне) добавляем строчку
На одном из хостингов, где я держу один из своих сайтов мне вывело, например:
PHP_SAPI = cgi-fcgi
Поскольку задачу крон на этом сайте мне запускать не надо, то и фиг с ним.
Но если надо, нужно:
— либо выкручивать руки хостеру, чтобы сконфигурировал вам ядро PHP вместе с cli,
— либо закоментировать строчку
что крайне не рекомендуется
Некоторые продвинутые хостинги позволяют юзеру самому сконфигурировать себе ядро PHP, выставляя галки напротив соответствующих модулей в Панели управления аккаунтом. Кроме cli можно включить, например, mb_string, IonCube и другие примочки, без которых наш Инстант не сможет работать полноценно.
Задача CRON на InstantCMS 1.х.х
Теперь, когда вы уверены, что Планировщик работает, останется:
— создать задачу CRON InstantCMS и
— написать скрипт, который будет выполняться на сайте от задачи CRON нашего движка.
Создание скрипта — задачи cron для Инстанта Первой ветки
Начнем со скрипта. Откройте папку(в Первой ветке это includes/myphp/), где уже лежит файл, поставляемый вместе с движком — includes/myphp/test.php. Напишите скрипт с именем my_cron.php (или любым другим, исходя из своей задачи, здесь my_cron.php для примера) и положите его рядом с test.php. Содержание этого файла пропишите таким:
Обратите внимание, что здесь путь не указан. Это сделано намерено. Параметр «а» в команде fopen() автоматически создает файл, если его нет. Этим можно воспользоваться для наших целей. В зависимости от настроек хостинга файл автоматически создастся либо в корне сайта, либо в той папке, где лежит файл my_cron.php.
Если файл НЕ создался, надо искать причину.
Подсказка, как проверить задачу CRON движка без Планировщика
Проверить связку my_cron.php — my_cron.txt можно очень быстро и очень просто, даже не используя CRON.
Воспользуемся фильтрами Инстанта.
Возьмите любую статью и откройте ее на редактирование. В ней в любом месте вставьте запускающую конструкцию фильтра: . Сохраните статью.
Стоит вам открыть эту статью для чтения, фильтр сработает. Он запустит includes/myphp/my_cron.php, а тот пропишет в my_cron.txt строчку
Если НЕ сработало:
— разбирайтесь с путями
— возможно, потребуется изменить cmod папки, где должен создаться файл.
Убедившись, что связка my_cron.php + my_cron.txt работает, можете удалить файл my_cron.txt, а my_cron.php переименовать сообразно Вашей задачи. Не забудьте из статьи удалить фильтр.
Открывайте свой будущий скрипт редактором и творите. Тут все зависит от вашего мастерства программиста.
Добавление задач
Теперь создаем задачу cron САМОГО Инстанта. Идем в админку, Настройки->Задачи CRON. Нажимаем зеленый плюсик. В открывшейся форме отвечаем на простые вопросы, а в поле Скрипт прописываем путь к нашему скрипту и его имя. Остальные поля оставляем незаполненными — они нам пока не нужны.
Наш скрипт должен работать.
Немного о том, как работает задача cron на Инстанте
Наш скрипт cron.php инициализирует ядро и все ядерные классы. Затем загружает из БД перечень задач CRON. Получается массив, каждый элемент которого — задача CRON. Файл cron.php перебирает массив, поэтому эти эти задачи последовательно выполняются.
Все задачи хранятся в БД в таблице cms_cron_jobs. Каждая запись — это отдельная задача.
Использование ядерных методов движка при запуске задачи CRON на Первой ветке.
Если вы зашли в админке в задачу cron, то можете увидеть поля для запуска некоторых ядерных методов движка.
Следует отметить, что далеко не все методы ядра могут быть выполнены таким образом. Например метод getHost() может быть вызван из командной строки сервера (читай, по команде Планировщика), поскольку имеет код, позволяющий обработать данные, полученные с сервера. А вот, к примеру, метод checkMenuAccess() у вас не сработает, поскольку работает с сессией. А какая сессия, если скрипт запускается не от браузера-клиента, а прямо с сервака? Суперглобальный массив $_SERVER не определен. Переменные окружения вообще не определены. Сессия не запущена.
Помните, прописывая в задачу cron методы ядра на исполнение, вы можете получить их неисполнение. Аналогично, если вы указали подходящий вам метод из модели компонента, понадеявшись, что он сработает по задаче cron и вернет данные, будте готовы испить горькую чашу разочарования. Здесь Вам не обойтись без досконального знания не только самого нашего InstantCMS, но и CGI.
Задача CRON на InstantCMS 2.х.х
Теперь, когда вы уверены, что Планировщик работает, останется создать задачу CRON InstantCMS 2.
1. Пишем скрипт. Скрипт должен находиться в папке system/controllers/имя_вашего _компонента/hooks/. Имя скрипту даете сами, но он должен обязательно начинаться на cron_: например, cron_my_script.php.
2. Идем в админку Панель управления -> Настройки -> Планировщик.
Нажмите зеленый плюсик и заполните поля.
— Поле «Описание». Сюда можете написать любой текст.
— Поле «Компонент». Укажите системное имя компонента. Если свой пишите, сюда добавьте имя своего компонента.
— Поле «Хук». Укажите имя скрипта (хука) — того самого, который вы создали немного раньше. В поле надо вписывать НЕ полное имя скрипта, а с отброшенным префиксом cron_. То есть для скрипта с именем cron_my_script.php вы указываете имя хука my_script.php.
— Поле «Период». Укажите период в минутах.
— Галка «Задача активна» Поставьте галку если хотите, чтобы задача была включена.
Как быть, если в скриптах, которые Вы написали, орфографические ошибки?
Никто из нас не безгрешен. Программируя, я всегда включаю вывод ошибок в браузер. Их видно моментально. Но куда выводить ошибки, которые возникли в скриптах, запущенных от Планировщика заданий? Ведь скрипты срабатывают не по запросу браузера!
Для этого на многих хостингах предусмотрена такая фича: все сообщения отправляются на чей-нибудь почтовый ящик. Обязательно укажите свой ящик в настройках Планировщика. Тогда Вы будете получать от него сообщения интерпретатора php. Те самые, которые он, в случае обнаружения ошибки, отправляет в браузер.
Правда, эта штука будет забивать вам ящик и при успешном срабатывании задачи cron, сообщениями вроде:
Чтобы этого не происходило, добавьте в конец строки Планировщика на хостинге, через пробел, команду >/dev/null 2>&1.
Например:
Точный вид команды узнайте у саппорта своего хостинга.
P.S. Я тут на днях порезвился и написал такой скрипт — у меня работает)))
Как получить список заданий Cron в Linux
Visitors have accessed this post 32877 times.
Для того чтобы Linux автоматически выполнял задачи по расписанию, которые в противном случае вам пришлось бы выполнять самостоятельно, например, запуск скриптов и выполнение определенных команд, мы используем инструмент под названием cron. В системах Linux утилита cron является единственным способом автоматизировать запуск скриптов через определенные промежутки времени.
Настройка Cron (Linux)
Чтобы настроить время и интервал запуска скрипта, используется команда crontab:
Флаг -e показывает, что необходимо отредактировать расписание запуска для текущего пользователя. После запуска команды вам нужно будет прописать правила в открывшемся временном файле. Обратите внимание на то, что правила будут запускаться только под тем пользователем, под которым вы их добавляли (если вам нужен запуск cron от пользователя root, то и правила нужно устанавливать от него).
Как добавить скрипт в cron
Чтобы задать конкретное время исполнения скрипта в cron, используется следующий синтаксис:
*минута *час *день *месяц *день_недели /путь к файлу
Для обозначения даты и времени используются цифры или * (означает, что нужно выполнять скрипт каждую единицу времени, например, если * заменяется час, то скрипт должен запускаться каждый час, если * используется вместо числового обозначения дня — то каждый день). Путь до файла следует указывать обязательно полностью, начиная с корневого файла.
Пусть, к примеру, наш скрипт cron запускает каждую неделю в среду в 14 часов 45 минут.
45 14 * * 3 /usr/local/ping/todo
Отсчет дней недели начинается понедельника, воскресенье считается седьмым или нулевым днем.
Если вам не важен конкретный момент запуска скрипта, но нужно, чтобы он был выполнен, например, во внерабочее время, можно указать интервал, воспользовавшись знаком -.
Запустим наш скрипт в каждый день недели каждый час в период с 00 до 5 часов утра.
0 00-5 * * * /usr/local/ping/todo
Или просто укажем интервал, через который нужно запускать скрипт. К примеру, каждые 30 минут (интервал обозначается при помощи разделителя /).
Также при запуске cron можно использовать переменные, чтобы запустить скрипт.
- @reboot — только 1 раз в момент загрузки;
- @yearly, @annually — ежегодно;
- @monthly — ежемесячно;
- @weekly — еженедельно;
- @daily, @midnight — ежедневно;
- @hourly — каждый час.
В этом случае команда для запуска нашего скрипта 1 раз в месяц будет выглядеть как
Теперь рассмотрим, как просматривать/получить список заданий, запланированных в списке crontab (это системный файл Linux с табличной структурой, где можно просмотреть все задачи cron, так называемые cron job).
Большинство Cron (например, Vixie-Cron — по умолчанию в Debian/Ubuntu, Cronie — по умолчанию в Fedora, Solaris Cron…) предоставляют список запланированных заданий cron для текущего пользователя через команду:
или для другого пользователя через:
# crontab -u username -l
Кроме того, вы можете посмотреть файлы расписания. Обычно они сохраняются в /var/spool/cron, например, для vcron следующий каталог /var/spool/cron/crontabs содержит все настроенные crontabs всех пользователей, кроме пользователя root. Он также может настраивать задания через общесистемный crontab, который находится в:
Чтобы просмотреть задания cron, выполните следующую команду less:
Пример структуры crontab:
SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root # For details see man 4 crontabs # Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr . # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user-name command to be executed
На компьютере это выглядит следующим образом:
# /etc/crontab: system-wide crontab # Unlike any other crontab you don't have to run the `crontab' # command to install the new version when you edit this file # and files in /etc/cron.d. These files also have username fields, # that none of the other crontabs do. SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # m h dom mon dow user command 17 * * * * root cd / && run-parts --report /etc/cron.hourly 25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ) 47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly ) 52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
В cronie (установлен по умолчанию в Fedora/CentOS, Ubuntu) существует каталог конфигурации в стиле cron.d для системных заданий cron:/etc/cron.d
Как всегда, каталог cron.d упрощает ведение записей конфигурации, которые являются частью разных пакетов.
Для удобства большинство дистрибутивов также предоставляет каталоги, в которых периодически выполняются привязанные/хранимые скрипты, например:
Как получить список почасовых заданий Cron
Чтобы просмотреть почасовые задания cron (Linux), выполните команду:
$ ls -la /etc/cron.hourly/ total 12 drwxr-xr-x 2 root root 4096 Apr 24 20:44 . drwxr-xr-x 96 root root 4096 May 19 17:12 .. -rw-r--r-- 1 root root 102 Feb 9 2013 .placeholder
Как посмотреть список ежедневных заданий Cron
Просмотреть список ежедневных заданий cron можно с помощью следующей команды:
$ ls -la /etc/cron.daily/ total 72 drwxr-xr-x 2 root root 4096 Apr 24 20:46 . drwxr-xr-x 96 root root 4096 May 19 17:12 .. -rw-r--r-- 1 root root 102 Feb 9 2013 .placeholder -rwxr-xr-x 1 root root 376 Apr 4 2014 apport -rwxr-xr-x 1 root root 15481 Apr 10 2014 apt -rwxr-xr-x 1 root root 314 Feb 18 2014 aptitude -rwxr-xr-x 1 root root 355 Jun 4 2013 bsdmainutils -rwxr-xr-x 1 root root 256 Mar 7 2014 dpkg -rwxr-xr-x 1 root root 372 Jan 22 2014 logrotate -rwxr-xr-x 1 root root 1261 Sep 23 2014 man-db -rwxr-xr-x 1 root root 435 Jun 20 2013 mlocate -rwxr-xr-x 1 root root 249 Feb 17 2014 passwd -rwxr-xr-x 1 root root 2417 May 13 2013 popularity-contest -rwxr-xr-x 1 root root 214 Mar 27 2017 update-notifier-common -rwxr-xr-x 1 root root 328 Jul 18 2014 upstart
Как посмотреть список еженедельных заданий Cron
Просмотреть список еженедельных заданий сron можно с помощью следующей команды:
$ ls -la /etc/cron.weekly/ total 28 drwxr-xr-x 2 root root 4096 Apr 24 20:46 . drwxr-xr-x 96 root root 4096 May 19 17:12 .. -rw-r--r-- 1 root root 102 Feb 9 2013 .placeholder -rwxr-xr-x 1 root root 730 Feb 23 2014 apt-xapian-index -rwxr-xr-x 1 root root 427 Apr 16 2014 fstrim -rwxr-xr-x 1 root root 771 Sep 23 2014 man-db -rwxr-xr-x 1 root root 211 Mar 27 2017 update-notifier-common
Как посмотреть список ежемесячных заданий Cron
Эта команда выгружает список ежемесячных заданий cron
$ ls -la /etc/cron.monthly/ total 12 drwxr-xr-x 2 root root 4096 Apr 24 20:44 . drwxr-xr-x 96 root root 4096 May 19 17:12 .. -rw-r--r-- 1 root root 102 Feb 9 2013 .placeholder
Просмотр программных заданий Cron
Посмотреть конкретное задание cron можно с помощью команды cat:
$ cd /etc/cron.daily/ $ ls -l total 60 -rwxr-xr-x 1 root root 376 Apr 4 2014 apport -rwxr-xr-x 1 root root 15481 Apr 10 2014 apt -rwxr-xr-x 1 root root 314 Feb 18 2014 aptitude -rwxr-xr-x 1 root root 355 Jun 4 2013 bsdmainutils -rwxr-xr-x 1 root root 256 Mar 7 2014 dpkg -rwxr-xr-x 1 root root 372 Jan 22 2014 logrotate -rwxr-xr-x 1 root root 1261 Sep 23 2014 man-db -rwxr-xr-x 1 root root 435 Jun 20 2013 mlocate -rwxr-xr-x 1 root root 249 Feb 17 2014 passwd -rwxr-xr-x 1 root root 2417 May 13 2013 popularity-contest -rwxr-xr-x 1 root root 214 Mar 27 2017 update-notifier-common -rwxr-xr-x 1 root root 328 Jul 18 2014 upstart $ cat update-notifier-common #!/bin/sh set -e [ -x /usr/lib/update-notifier/package-data-downloader ] || exit 0 # Try to rerun any package data downloads that failed at package install time. /usr/lib/update-notifier/package-data-downloader
Кроме того, у вас могут быть задания at (/var/spool/at/*), anacron (/etc/anacrontab и /var/spool/anacron/*)
Правильное и своевременное выполнение этих скриптов осуществляется через записи частей выполнения в системном файле crontab или через anacron.
С помощью systemd (в Fedora, CentOS 7 и т. д.) периодическое выполнение заданий может быть дополнительно сконфигурировано через юниты таймера. Включенные системные таймеры могут отображаться через:
$ systemctl list-timers
Мы рассмотрели все каталоги по умолчанию, где можно найти задания cron в большинстве систем Linux.
От редакции
Если вам интересно посещать открытые онлайн-мероприятия по DevOps, Kubernetes, Docker, GitlabCI и др. и задавать вопросы в режиме реального времени, подключайтесь к каналу DevOps by REBRAIN. *Анонсы мероприятий каждую неделю
Планировщик задач Cron и команда crontab
Cron (Command Run ON) — система для автоматического запуска программ и скриптов на сервере в определённое время.
Управлять cron нужно с помощью команды ‘crontab’.
Команда crontab -l покажет список текущих заданий, crontab -e автоматически запустит текстовый редактор и загрузит в него файл конфигурации cron. После выхода из редактора, новая конфигурация cron будет установлена (вступит в силу) автоматически.
Конфигурационный файл содержит последовательность командных строк и расписание их вызова. Пустые строки и строки, начинающиеся с символа ‘#’ игнорируются. Остальные строки являются установками переменных окружения и командами cron.
Запись crontab- файла в общем случае состоит из семи полей:
минуты часы день месяц день_недели имя_пользователя команда
Допустимые значения временных параметров:
Параметр | Допустимый интервал |
минуты | 0-59 |
часы | 0-23 |
день месяца | 1-31 |
месяц | 1-12 |
день недели | 0-7 (0-Вс,1-Пн,2-Вт,3-Ср,4-Чт,5-Пт,6-Сб,7-Вс) |
Поле может быть задано явно или шаблоном:
- * — любая цифра;
- целое число;
- целые числа через запятую — задание дискретного множества значений, например 1,2,5;
- два целых числа, разделенные дефисом, соответствующие диапазону значений, например 3-6.
Пример готовой строки сценария cron:
# Выполнять задание в 18 часов 7 минут 13 мая если это пятница
7 18 13 5 5 /home/www/myscript.pl
# Выполнять задание раз в час в 0 минут
0 */1 * * * /home/www/myscript.pl
# Выполнять задание каждые семь часов в 0 минут
0 */7 * * * /home/www/myscript.pl
# Выполнять задание по воскресеньям в 10 час 30 минут
30 10 * * 0 /home/www/myscript.pl
Выполнение PHP-файлов
Для выполнения php скриптов из cron необходим бинарный интерпретатора PHP.
Реальный путь на сервере к корневой директории сайта и путь к PHP уточните в службе поддержки хостинга.
# Пример запуска скрипта в 5 утра каждый день:
0 5 * * * /usr/bin/php -q /home/www/script.php
Обратите внимание, при запуске из cron опция -q указывает PHP не выдавать HTTP-заголовки.
Не нашли ответ на свой вопрос в документации? Направьте обращение в службу поддержки или онлайн чат.
- Купить онлайн
- Скачать бесплатно
- Готовые сайты
- Готовые интернет-магазины
- Демо-версия
- Отзывы пользователей