Запуск программ по расписанию. Использование CRON.
Большинство хостеров предлагают возможность запуска программ по расписанию. Т.е. Вы можете автоматически выполнять некоторые свои программы через определенные интервалы времени. Напимер каждые 30 минут или каждый день. Это бывает очень полезно для проведения обслуживания вашего сайта. Так называемых регламентных операций, например очистка папки с временными файлами, очистка и сжатие базы данных.
Каждая строка в файле /etc/crontab имеет следующий формат:
Для любых указанных выше параметров можно использовать звездочку (*), что означает все допустимые значения. Например, если поставить звёздочку в значении месяца, команда будет выполняться каждый месяц во время, указанное другими параметрами.
Дефис (-) между целыми числами обозначает диапазон чисел. Например, 1-4 означает целые числа 1, 2, 3 и 4.
Список значений, разделенных запятыми (,), обозначает перечень. Например, перечисление 3, 4, 6, 8 означает четыре указанных целых числа.
Косая черта (/) используется для определения шага значений. Целочисленное значение может быть пропущено в диапазоне, если после диапазона указать / . Например, значение минут 0-59/2, определяет, что будет пропущена каждая вторая минута. В качестве шага значений также может быть указана звёздочка. Например, значение месяца */3 определяет, что будет пропущен каждый третий месяц.
Любые строки, начинающиеся с символа решетки (#), являются комментариями, и не обрабатываются.
Как указывать путь к запускаемому через crontab файлу?
Например, 0 4 * * * путь
/public_html/cgi-bin/&
/home/w/windows/public_html/cgi-bin/&
Символ & в конце строки является необязательным элементом и указывает, что программу нужно запустить в фоновом режиме
Символ
обозначает путь от корня к домашнему каталогу пользователя
Проблемы с запуском программы по CRON-у
В первой строке PHP файла, запускаемого по Cron-у обязательно указание пути до интерпретатора PHP:
Или укажите команду для cronа php путь до файла или GET ссылка на файл.
Управление Cron средствами php
В уроке мы создадим динамический класс PHP, который будет использовать безопасное подключение, и предоставит нам возможность управления cronTab!
Несмотря на то что на первый взгляд синтаксис планирования новой cron задачи может не на шутку озадачить новичка, со временем и практикой всё станет довольно-таки просто. Если коротко, то у cron задачи есть пять колонок, каждая из которых представляет хронологический ‘оператор’ (время запуска), и путь к самому файлу, который необходимо выполнить:
Как вы уже поняли, каждая из колонок представляет собой цифру (время), относящееся к той или иной задаче. Давайте рассмотрим их поподробнее:
Например, если бы кто-то хотел выполнять задачу в 0:00 в первый день каждого месяца, то это выглядело бы примерно так:
Если бы мы хотели наметить задачу, которая бы выполнялась каждую субботу в 8:30, то мы написали бы следующий код:
Также существует множество операторов, которые могут использоваться для того, чтобы настроить график ещё более детально:
Вдобавок к тому, что у нас есть, если мы переадресуем поток данных к устройству, которое не существует, то наверняка нужно также переадресовать стандартные ошибки. Мы можем сделать это, просто переадресовывая их в то же место, где и должно находиться наше устройство!
Мы начнем наш класс с объявления четырёх приватных свойств:
Наш класс должен быть в состоянии соединиться с сервером и подтвердить подлинность пользователя, для того, чтобы только администратор мог пользоваться данной утилитой. Таким образом, мы установим связь SSH2 и подтвердим подлинность ее в пределах конструктора.
Затем, нам понадобится возможность вписать cronTab в файл – на это у нас должны быть соответствующие права. Также не нужно забывать, что мы так же должны быть в состоянии удалить этот файл, когда он нам больше не будет нужен. Итак, к нашему методу прибавляется ещё несколько методов, таких как write_to_file() и remove_file() для добавления и удаления файлов.
Конструктор класса прежде всего будет ответственен за установление и подтверждение связи SSH2. Для этого нам потребуется четыре аргумента, у каждого из которых будет значение по умолчанию NULL :
После мы будем использовать функцию substr() для того, чтобы вырезать нужный нам фрагмент строки, а именно полный путь.
В substr() мы передадим 3 аргумента:
После выполнения данных функций у нас будет сформирован полный путь, в котором нуждается скрипт.
Теперь мы определим строку, которая будет присваиваться по умолчанию для временного cron файла, а затем объединим с полным путём, который вычислили раньше. Вот мы и получили то, что нам нужно.
После того, как мы вычислили необходимые нам значения, приступим к работе над созданием и проверкой связи с сервером. Весь этот функционал мы поместим в блок try / catch для того, чтобы иметь возможность отлавливать возникшие ошибки. В этом случае, мы можем отловить ошибки и выбросить исключение, чтобы предоставить пользователю подробную информацию о сбое.
Так как мы используем нашу собственную обработку ошибок, то нам также нужно предусмотреть обработку этих сообщений. Если скрипту не удастся соединиться с сервером, то мы выбросим новое исключение с соответствующим сообщением.
PHP попытается найти блок catch в том случае, если возникнет какая-то ошибка во время работы скрипта, а затем создать объект исключения, который содержит много полезной информации об ошибке.
Теперь, в пределах блока try, мы проверим, передают ли какие-либо аргументы в этот метод или нет. Если количество аргументов будет равно 0, то мы бросим новое исключение с соответствующим сообщением.
Затем, используем функцию func_get_args() для создания множества всех аргументов, которые передали в этот метод.
И в этом случае, мы будем использовать блок try / catch для того, чтобы иметь возможность отловить любые сообщения об ошибке. Также мы будем выбрасывать наше собственное исключение с соответствующим сообщением.
Вот именно для этого мы и написали блок try / catch! Теперь дополним это код вызовом метода error_message () для отображения ошибок!
После этого мы сольём данные в одно целое, которое будет содержать полный путь для временного cron файла.
Наконец, мы вызовем метод exec() и передадим строку с командой.
Теперь, когда мы можем создать новые cron задачи, по логике вещей, нам необходимо иметь возможность их удалить! Метод remove_cronjob() будет принимать один аргумент, представляющий из себя регулярное выражением. Этот regEx будет использоваться для того, чтобы найти соответствие задачи в пределах cronTab и удалить их.
Теперь давайте рассмотрим несколько вспомогательных методов, которые мы использовали во время написания основного скрипта.
Этот метод просто возвращает результат функции file_exists() в зависимости от того, существует ли временный cron файл.
Этот метод принимает сообщение об ошибке, которое мы хотим показать.
Теперь давайте посмотрим, как пользоваться созданным нами детищем:
Заключение
Вот и всё! Надеюсь, урок был для вас полезен, и вы сможете применить накопленные знания в ваших проектах. Удачи!
Cron: что это такое и как его правильно использовать
Разбираемся с тем, что представляет собой Cron, как он работает и зачем нужен. Пытаемся обуздать его параметры, чтобы планировать задачи на своем сервере без лишних затрат сил и времени.
Что такое Cron и crontab?
Если в двух словах, то Cron – это планировщик задач. Если подробнее, то это утилита, позволяющая выполнять скрипты на сервере в назначенное время с заранее определенной периодичностью.
К примеру, у вас есть скрипт, который собирает какие-либо статистические данные каждый день в 6 часов вечера. Такие скрипты называют «заданиями», а их логика описывается в специальных файлах под названием сrontab.
crontab – это таблица с расписанием запуска скриптов и программ, оформленная в специальном формате, который умеет считывать компьютер. Для каждого пользователя системы создается отдельный crontab-файл со своим расписанием. Эта встроенная в Linux утилита доступна на низком уровне в каждом дистрибутиве.
В Linux-дистрибутивах с поддержкой systemd Cron считается устаревшим решением, его заменили утилитой systemd.timer. Ее предназначение и функциональность не отличается, но фактически частота использования Cron все еще выше.
Для чего обычно используют Cron?
Обычно Cron заставляют повторять вполне очевидные задачи в духе регулярного создания резервных копий данных. Но это не все.
С помощью Cron пользователи автоматизируют самые разные задачи, сокращая вмешательство системного администратора в работу сервера.
Базовые принципы работы с Cron и crontab (через панель управления)
Многие хостинг-провайдеры предлагают отдельное меню в панели управления для настройки расписания запланированного выполнения скриптов.
Разберем подобное меню на примере панели управления Timeweb. Чтобы создать новую задачу, необходимо открыть раздел Crontab в боковой панели веб-интерфейса, кликнуть по кнопке «Добавить новую задачу» и указать параметры повторяющейся команды. Поговорим подробнее о параметрах.
На этом все. Скрипт запланирован и будет регулярно повторяться.
Базовые принципы работы с Cron и crontab (через SSH-протокол)
Планировать задачи через панель управления удобно, но не всегда возможно. Не все хостинг-провайдеры предлагают такие функциональные веб-интерфейсы. В этом случае придется воспользоваться командной строкой, подключившись к серверу по протоколу Secure Shell.
Для работы с планировщиком в системе есть ряд команд, помогающих решать основные задачи:
Чтобы запланировать задачи, используя командную строку, необходимо выполнить базовую настройку Cron, проверить, не установлены ли ограничения, и заполнить расписание задач в соответствии с синтаксисом сrontab.
Первичная настройка Cron
Как мы уже выяснили ранее, планировщик черпает параметры для выполнения своих задач из crontab-файлов (таблиц с расписанием). У каждого пользователя, включая root, должен быть свой crontab-файл. По умолчанию он не существуют, поэтому придется создать его вручную.
Вновь созданный файл будет пустым текстовым полем. Необходимо добавлять в него все параметры самостоятельно с нуля, опираясь на синтаксис сrontab (более подробно поговорим о нем ниже). После ввода параметров нужно сохранить параметры редактора, нажав на клавишу F2, а затем покинуть конфигурационный файл, нажав на клавишу F10. При введении корректных параметров в терминале отобразится строка crontab: installing new crontab.
Опытные разработчики и системные администраторы не рекомендуют использовать для редактирования расписания текстовые редакторы в духе Nano, Emacs или Vi. Команды crontab позволяют не только внести изменения в таблицу запланированных задач, но и перезапустить фоновый процесс crond, отвечающий за работу утилиты после сохранения настроек.
Ограничения Cron
У Cron есть функция установки ограничений на использование, задающихся через два специальных файла: cron.allow и cron.deny.
Первый файл находится в директории /usr/lib/cron/cron.allow и содержит в себе список учетных записей (имен пользователей), которые имеют право на планирование задач с помощью встроенных системных утилит.
Второй файл находится в директории /usr/lib/cron/cron.deny. В нем указываются имена пользователей, которые не могут запускать встроенный в систему планировщик задач.
Если первого файла не существует, то любой пользователь может планировать задачи с помощью встроенного в систему планировщика, но только при условии, что его имени нет во втором файле. Если удалить оба файла, то каждый пользователь сможет планировать задачи без ограничений.
Синтаксис crontab
Первые три линии кода в таблице отвечают за первичную настройку. Сначала указывается оболочка, в которой будет работать Cron. У утилиты нет каких-либо предпочтений, поэтому можно указать любую на собственное усмотрение (в нашем примере это bash). Затем указывается адрес электронный почты, на который будут отправляться отчеты о работе планировщика. И напоследок указывается путь к окружению.
Ниже находятся параметры, используемые для запуска процессов в определенный период времени. В комментариях описан базовый синтаксис, включающий в себя формат времени, имя пользователя и команду, которая должна быть запущена.
В нашем случае указаны команды:
Примеры использования Cron в командной строке
создает в таблице расписания задачу на запуск скрипта под названием bckp (представим, что такой существует), который создает резервную копию всей системы на стороннем накопителе. Он выполняется 5 числа каждого месяца в 4 часа 2 минуты утра. Это видно по числовым значениям. Звездочки же указывают на отсутствие конкретного значения. Cron воспринимает их как «выполнять каждый раз», то есть каждый месяц, день или неделю.
меняет время аппаратного обеспечения на то, что используется в системе. Делает это каждый день, каждую неделю и каждый месяц в 6 часов 4 минуты утра. Как видите, здесь пропущено третье значение. Поэтому команда и запускается ежедневно, так как нет более конкретных правил.
запускает обновление пакетов с помощью пакетного менеджера apt каждый месяц 5 числа в 05:10.
удаляет содержимое папки с временными файлами для конкретного пользователя (меня) на пятой минуте (первый пункт) каждого часа. Так как определенные значения отсутствуют для всех остальных пунктов, получается, что скрипт готов выполняться каждый день, каждый месяц и каждый час. Но первое значение указано, поэтому он будет дожидаться пятой минуты и запускаться в этот момент. То есть в 12:05, 13:05, 14:05 и т.п.
Как видите, разобраться с базовыми командами несложно.
Другие примеры настройки Cron
На примере команды для удаления временных файлов разберем пару-тройку нестандартных настроек расписания.
К примеру, некоторые показатели можно вводить не в виде цифр, а в виде сокращенных слов. Чтобы запускать удаление временных файлов каждую пятницу в 4 часа вечера, необходимо ввести в crontab:
Если не указывать в планировщике точных вводных, то выбранный скрипт будет выполняться каждую минуту:
Можно заставить планировщик выполнять задачу только в определенные месяцы. Чтобы запускать удаление временных файлов 1 февраля, 1 мая и 1 сентября в половину первого ночи, необходимо ввести в crontab:
Некоторые скрипты необходимо выполнять только по будням, поэтому в Cron есть возможность исключить некоторые дни недели из расписания:
Часы тоже можно делить. Например, запускать ту или иную задачу каждые 3 часа. Для этого нужно поставить слэш в графе с установкой времени по часам:
Вместо заключения
О работе с Cron стоит знать еще пару важных вещей.
Во-первых, всегда указывайте корректный почтовый адрес в параметрах. Это позволит собирать информацию о запускаемых по расписанию задачах. В этих письмах содержится и информация о возникающих ошибках. Во-вторых, при указании «исполнителя» в панели управления Timeweb важно делать корректный выбор, чтобы он соответствовал запускаемой задаче. В-третьих, информацию о работе Cron можно собирать в отдельный файл с помощью команд в духе:
На этом все. Следуйте инструкциям, не путайте порядок параметров и внимательно изучайте журнал ошибок, если что-то пойдет не так. После недолгой практики вы поймете, что работать с Cron не так уж и сложно!
Что такое cron php
Примеры таких заданий:
Настройка задач Cron через панели управления хостингом
На виртуальном хостинге вы можете управлять задачами в Cron через специальный web-интерфейс.
После того, как вы введете данные для настройки задания через панель управления хостингом, они автоматически преобразуются в запись в файле с расписанием задач Cron.
Соответствующий раздел в панелях управления может называться “Cron”, “Crontab” или “Планировщик”. Например, так выглядит настройка Cron у провайдера Timeweb.
При добавлении задания вы можете указать его описание, тип и периодичность запуска.
Через web-интерфейс панели управления даже неопытный пользователь хостинга сможет настроить выполнение необходимых команд, согласно нужному ему расписанию.
Аналогично средства управления задачами Cron встроены в популярные панели управления сервером ISPmanager и cPanel, которые можно установить на VPS/VDS или на выделенный сервер.
ISPmanager
1. В ISPmanager задачи Cron создаются через раздел “Планировщик”.
2. При формировании задачи можно использовать базовый режим с указанием времени исполнения задания в привычной людям форме.
3. Для опытных пользователей предназначен экспертный режим, когда настройки времени исполнения задания делаются так же, как и при редактировании команд Cron вручную.
О редактировании Cron через командную строку читайте ниже.
cPanel
2. При редактировании задач в Cron вы можете настроить время исполнения задачи и указать название команды.
Некоторые провайдеры позволяют пользователям виртуального хостинга подключаться к серверу по протоколу SSH и получать доступ к командной строке.
В этом случае для управления задачами в Cron вручную вы можете использовать команду:
Такая же возможность есть и у владельцев VPS/VDS и выделенных серверов.
Редактирование Cron через командную строку
Задания в Cron и их расписание описываются в виде текстового файла, состоящего из строк специального формата.
Любой пользователь VPS/VDS и выделенных серверов на Linux может самостоятельно добавить задание в Cron с помощью специальной команды сrontab.
При запуске crontab открывается редактор текстового файла с уже имеющимися задачами Cron.
Для новой задачи добавьте строку в этот файл и сохраните его.
Каждый день очищать каталог временных файлов
0 3 * * rm /home/tmp/
Пример: редактирование заданий Cron с помощью команды crontab
Запускать задачи в Cron можно с точностью до одной минуты.
Если это необходимо, то задания, запускаемые из Cron, могут записывать отчет о своей работе в журнальные файлы (логи).
1. Чтобы включить запись логов в Cron:
3. Сделайте рестарт rsyslog:
Формат записей в Cron
Задания, которые нужно выполнить, описываются в Cron с помощью строк определенного формата.
Каждая строка содержит информацию:
Под командой подразумевается название скрипта в файловой системе Linux.
Скрипты могут дополняться специальными параметрами для их запуска, которые отделяются от названия команды пробелами.
Строка описания задачи в Cron начинается с пяти специальных полей, определяющих точное расписание для запуска нужного скрипта.
1. Минуты (от 0 до 59).
2. Часы (от 0 до 23).
3. Дни месяца (от 1 до 31).
4. Месяц (от 1 до 12).
5. Дни недели (от 0 до 6, начиная с воскресенья).
Значения полей разделяются между собой пробелами. Также пробелы отделяют их от названия скрипта для запуска задания.
Если вместо цифр в каком-то из полей указывается символ звездочки “*”, то это означает подстановку всех возможных значений. Например, “*” в поле “день месяца” означает, что команда запускается каждый день.
В полях можно использовать символы:
Например, значение “5,10,19” в поле “часы” означает, что команда будет запускаться в 5 часов, в 10 часов и в 19 часов.
Значение “0-5” в поле “дни недели” означает, что команда будет запускаться каждый день, кроме субботы.
Пример записи в Cron
Данная запись означает, что команда “/home/admin/backup” будет запускаться каждый день в 8 часов 30 минут.
Необходимо помнить, что время запуска команд привязано к установленному на сервере времени и часовому поясу. Используемый на сервере часовой пояс (timezone) можно выяснить у технической поддержки хостинга или с помощью команды date из командной строки сервера.
Нюансы и полезные советы при работе с Cron
Команды, которые настраиваются через Cron, запускаются и работают на сервере провайдера от имени конкретного пользователя.
Если нужно, чтобы по расписанию открывалась некая страница сайта и исполнялся определенный скрипт, который привязан к ней, то необходимо обеспечить обращение к этой странице по протоколу HTTP (HTTPS) так же, как это происходит при использовании браузера.
Для этой цели на всех серверах хостинга в комплекте программного обеспечения имеется специальная утилита wget, которая умеет обращаться к страницам сайтов по протоколам HTTP и HTTPS. Например, для того, чтобы запускать раз в сутки в три часа ночи запрос по протоколу HTTP-страницы, расположенной по адресу http://mysite.ru/cron, нужно прописать в CRON следующее:
Другой распространенный вопрос связан с использованием интерпретатора языка программирования PHP для запуска скриптов. Предположим, что скрипты, предназначенные для запуска через Cron, уже готовы и расположены внутри каталога с сайтом в папке scripts.
Уточните у технической поддержки хостинга полный путь, по которому располагается на сервере хостинга бинарный файл интерпретатора PHP. Обычно этот путь имеет вид, наподобие /usr/bin/php или /usr/local/bin/php.
Также выясните полный путь к корневому каталогу сайта. Эта информацию можно узнать в панели управления хостингом или у технической поддержки. Допустим, полный путь выглядит как “/home/user/www/mysite.ru/”.
Теперь, имея всю необходимую информацию о расположении файлов и папок, можно настроить запуск скрипта “myscript.php” cron в виде такой строки.
0 3 * * * /usr/bin/php /home/user/www/mysite.ru/scripts/myscript.php
Как правило, при работе скриптов через Cron любая выводимая ими информация считается важной и перенаправляется владельцу сайта на его электронную почту. Для того, чтобы запретить работающим через Cron скриптам выводить во время работы любые сообщения, следует добавить в конце строки специальный набор символов-операторов: “>/dev/null 2>&1”. Это выключает любые сообщения от скриптов, в том числе информацию об ошибках.
0 3 * * * /home/user/www/mysite.ru/scripts/myscript >/dev/null 2>&1
Пример настройки Cron с отключением вывода об ошибках
Выводы
Планировщик Cron используется в операционной системе Linux для управления выполнением задач по расписанию.
Для владельцев виртуальных и выделенных серверов доступна возможность настраивать записи Cron вручную из командной строки сервера с помощью команды crontab.
Что такое CRON и как правильно его настроить?
Cron применяют для автоматизации выполнения поставленных задач на сервере. Он работает на Linux и отлично подходит для того, чтобы запустить программу или скрипт на определенное время и с определенной периодичностью, запланировав это действие заранее.
Настройка планировщика заданий Cron
Необходимые к выполнению задания записываются в виде строк, в которых необходимо указать период включения и команду, указывающую, что именно необходимо запустить. Для каждого задания отводится отдельная строка. Например:
На более понятном простому пользователю языке тут обозначены: Минуты/Часы/ДеньМесяца/ДеньНедели/Команда. Данный пример означает, что в 3:30 ночи, каждый вторник, Сron должен запускать файл с названием youdirectory/myscript.pl.
Если перечислить значения через запятую, например в пункте «День» написать 2,4,6, то файл будет запускаться в указанное время каждый вторник, четверг и субботу.
Если задать значения через дефис, то задача будет исполняться в указанном интервале времени. Например, если в пункте «Часы» задать 3-7, то файл будет запускаться каждый час с 3 до 7 утра.
Также можно задать периодичность, написав в графе времени, например, в «Часы» /12. Тогда задача будет исполняться каждые 12 часов.
Важно знать, что «*» означает не отсутствие значения, а все возможные значения. То есть, если задать * * * * 1 /yourdirectory/myscript.pl, желая, чтобы файл запускался каждый понедельник, то это окажется совершенно неверным и файл будет запускаться каждую минуту.
Еще одна важная особенность – это необходимость указания абсолютного пути к файлу. А также файлу необходимо иметь такие права доступа, чтобы он хотя бы мог запускаться.
Из представленных примеров становится понятно, что данный планировщик задач в Linux является очень удобным инструментом, поэтому предлагаем вам более подробно ознакомиться с некоторыми его особенностями.
Как устанавливать задачи для Cron
Наиболее простым и распространенным методом работы с Cron является панель администрирования хостинга. Однако, у различных панелей конфигурация Cron происходит по-разному.
Иногда случается, что хостинг не предоставляет возможности работы с Cron через панель администрирования. В такой ситуации используют SSH-протокол. С помощью него подключаются серверу, используя программу PuTTY, и вводят задачи в командной строке.
Для начала работы следует ввести команду:
Далее вы попадете в vi – текстовый редактор, однако, эти редакторы могут быть разными у разных хостингов. Если вы не знакомы с работой в vi, то вы можете ввести команду: EDITOR=ee crontab –e, которая перенаправит вас в более простой и понятный редактор.
В случае, когда хостинг не осуществляет поддержку открывшегося редактора, придется разобраться с работой vi:
Примеры задач для Cron в linux
— Исполнять задание каждые 6 часов в 30 минут каждого дня каждого месяца:
— Исполнять задание после каждой перезагрузки:
— Исполнять задание 15 числа каждого месяца в 00 часов 00 минут:
PHP-файлы
Чтобы запустить PHP-скрипты, обычно используют интерпретатор. Универсальной инструкции по его работе нет, так как разные хостинги используют разнообразный софт. В следствие этого часто прибегают к помощи WGET для запуска PHP в Cron. Вводим следующую запись:
Разберем более подробно:
Ограничения Cron
У самого Cron имеется всего одно ограничение – период исполнения задач. Если вы перегружаете сервер своего хостинга, он может поставить запрет на запуск Cron чаще, чем раз в несколько минут или час. Кроме этого Cron ограничен только ресурсами сервера, такими как: оперативная память, объемы данных, время выполнения команд и т.д.
Если сервер перезагрузится, то Cron сохранит все ваши задачи, перезагрузившись вместе с ним.
Отчет
У Cron существует настройка, чтобы настроить уведомления о его работе на электронную почту. Это особенно полезно, если при работе случится какая-либо ошибка. Чтобы включить такие уведомления на почту, необходимо в crontab вписать строчку:
После MAILTO= указывается необходимая почта. Указать их можно сразу несколько, перечислив через запятую. Теперь, если вдруг случится ошибка, вы будете проинформированы об этом. При чем, к вам на почту будут приходить и результаты работы скриптов. Однако, если данная функция вам мешает, ее можно и отключить, введя в конце задачи команду > /dev/null 2>&1.
Что такое CRON и как правильно его настроить?: 2 комментария
Почему может не работать wday? Указываю 6 — всё равно выполняется вне зависимости от дня недели. Нужна первая суббота, делаю примерно так:
0 21 1-7 * 6 /usr/local/etc/test.sh 2>>/var/log/mycron.log


















