Crontab настройка: Как настроить cron и запустить PHP скрипт на Linux ⌛
Использование Cron для автоматизации задач в Ubuntu 18.04
Предыдущая версия данного обучающего руководства была написана Шоном Льюисом.
Введение
Cron — это хронологический демон-планировщик задач, работающий в операционных системах типа Unix, включая дистрибутивы Linux. Cron запускается в фоновом режиме, а задачи, запланированные в cron и именуемые «задачи cron», выполняются автоматически, что делает cron полезным для автоматизации связанных с обслуживанием задач.
В этом обучающем руководстве вы познакомитесь с тем, как планировать задачи с помощью специального синтаксиса cron. Также мы рассмотрим несколько комбинаций клавиш, которые вы можете использовать при создании расписаний задач, чтобы их проще было писать и понимать.
Предварительные требования
Для выполнения этого обучающего руководства вам потребуется доступ к компьютеру с Ubuntu 18.04. Это может быть ваш локальный компьютер, виртуальная машина или виртуальный приватный сервер.
Независимо от того, какой компьютер вы используете для выполнения этого обучающего руководства, у вас должен быть пользователь без привилегий root с настроенными правами администратора. Чтобы выполнить настройку, воспользуйтесь руководством по начальной настройке сервера Ubuntu 18.04.
Установка cron
Почти все дистрибутивы Linux имеют ту или иную форму cron, установленную по умолчанию. Но если вы используете компьютер Ubuntu, где cron не установлен, вы можете установить его с помощью APT.
Перед установкой cron на компьютер Ubuntu обновите локальный индекс пакетов компьютера:
Затем выполните установку cron с помощью следующей команды:
Вам также нужно убедиться, что он настроен для работы в фоновом режиме:
- sudo systemctl enable cron
Output
Synchronizing state of cron.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable cron
После этого cron будет установлен в системе, а вы сможете начать составлять расписание задач.
Как работает Cron
Задачи в cron записываются и управляются в специальном файле crontab
. Каждый профиль пользователя в системе может иметь собственный файл crontab, где составляются расписания задач, которые хранятся в /var/spool/cron/crontabs/
.
Чтобы запланировать задачу, вам нужно открыть ваш файл crontab для редактирования и добавления задачи, написанной в форме выражения cron. Синтаксис выражений cron можно разбить на два элемента: расписание и команда для запуска.
Команда может быть практически любой командой, которую вы можете запустить в командной строке. Компонент расписания в синтаксисе разбит на 5 разных полей, которые расположены в следующем порядке:
Поле | Допустимые значения |
---|---|
минута | 0–59 |
час | 0–23 |
День месяца | 1–31 |
месяц | 1–12 или ЯНВ–ДЕК |
День недели | 0–6 или ПНД–ВСК |
Все вместе задачи, запланированные в crontab, выглядят следующим образом:
minute hour day_of_month month day_of_week command_to_run
Ниже представлен функциональный пример выражения cron. Это выражение запускает команду curl http://www.google.com
каждый вторник в 17:30:
30 17 * * 2 curl http://www.google.com
Также существует несколько специальных символов, которые вы можете включить в компонент расписания выражения cron, что упрощает создание расписания:
*
: в выражениях cron звездочка () служит подстановочным символом, который представляет все значения. Таким образом, задача, запланированная в форме ` * * * * …`, будет запускаться каждую минуту, каждый час, каждый день каждого месяца.,
: запятые разбивают значения расписания для получения списка. Если вы хотите запускать задачу в начале и середине каждого часа, а не выполнять две отдельные задачи (например,0 * * * * ...
и30 * * * * ...
), вы можете добиться той же функциональности с помощью одного выражения (0,30 * * * * ...
).-
: дефис представляет диапазон значений в поле расписания. Вместо создания 30 отдельных запланированных задач для команды, которую вы хотите запускать первые 30 минут каждого часа (например,0 * * * * ...
,1 * * * * ...
,2 * * * * ...
и т. д.), вы можете просто запланировать его следующим образом:0-29 * * * * ...
./
: вы можете использовать косую черту со звездочкой для выражения значения шага. Например, вместо написания восьми отдельных задач cron для запуска команды каждые три часа (например,0 0 * * * ...
,0 3 * * * ...
,0 6 * * * ...
и т. д.), вы можете задать расписание для запуска следующим образом:0 */3 * * * ...
.
Примечание. Вы не можете выражать значения шага произвольно, допускается использование только целых чисел, которые равномерно делят диапазон, допустимый для данного поля. Например, в поле «часы» вы можете указать после косой черты только 1
, 2
, 3
, 4
, 6
, 8
или 12
.
Ниже представлено несколько примеров использования компонента расписания cron:
* * * * *
— запускать команду каждую минуту.12 * * * *
— запускать команду 12 минут в начале каждого часа.0,15,30,45 * * * *
— запускать команду каждые 15 минут.*/15 * * * *
— запускать команду каждые 15 минут.0 4 * * *
— запускать команду каждый день в 4:00.0 4 * * 2-4
— запускать команду каждый вторник, среду и четверг в 4:00.20,40 */8 * 7-12 *
— запускать команду в 20-ю и 40-ю минуту каждого 8-го часа каждый день последних 6 месяцев года.
Если вы найдете что-то из этого затруднительным или вам потребуется помощь при написании расписания для ваших собственных задач cron, Cronitor предоставляет удобный редактор выражений cron, который называется Crontab Guru и который вы можете использовать для проверки действительности ваших расписаний cron.
Управление файлами crontab
После настройки расписания и определения задания, которое нужно запустить, вам нужно будет поместить его в место, где ваш демон сможет его прочитать.
Как уже упоминалось выше, crontab — это специальный файл, где содержится расписание задач, которые cron будет запускать. Однако эти данные не предназначены для редактирования напрямую. Вместо этого рекомендуется использовать команду crontab
. Она позволяет изменять файл crontab вашего профиля без внесения изменений в ваши права с помощью sudo
. Команда crontab
также позволит вам понять, есть ли в crontab ошибки синтаксиса, независимо от того, редактируете вы его или нет.
Вы можете изменить файл crontab с помощью следующей команды:
Если вы впервые запускаете команду crontab
в этом профиле пользователя, вы сможете выбрать используемый по умолчанию текстовый редактор для использования при редактировании crontab:
Output
no crontab for sammy - using an empty one
Select an editor. To change later, run 'select-editor'.
1. /bin/nano <---- easiest
2. /usr/bin/vim.basic
3. /usr/bin/vim.tiny
4. /bin/ed
Choose 1-4 [1]:
Введите число, соответствующее нужному вам редактору. Кроме того, вы можете просто нажать ENTER
, чтобы использовать вариант по умолчанию, nano
.
После выбора вы попадете в новый файл crontab, содержащий ряд закомментированных инструкций по его использованию:
# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h dom mon dow command
При запуске crontab -e
в следующий раз, ваш файл будет автоматически открываться в этом текстовом редакторе. После входа в редактор вы можете ввести свое расписание для каждой задачи в новой строке. В противном случае вы можете сохранить изменения и закрыть файл crontab (CTRL + X
, Y
, а затем ENTER
, если вы выбрали nano
).
Примечание. В системах Linux имеется другой файл crontab, сохраненный в директории /etc/
. Это системный файл crontab, где имеется дополнительное поле, определяющее, для какого профиля пользователя должна запускаться каждая команда cron. В этом обучающем руководстве мы будем использовать файл crontab для конкретного пользователя, но если вы хотите изменить системный файл crontab, вы можете сделать это с помощью следующей команды:
Если вы хотите просмотреть содержимое файла crontab, не изменяя его, вы можете использовать следующую команду:
Вы можете стереть файл crontab с помощью следующей команды:
Предупреждение. Следующая команда не будет запрашивать подтверждение того, что вы хотите стереть ваш файл crontab. Используйте ее, если вы уверены, что хотите стереть его.
Эта команда удаляет файл crontab пользователя немедленно. Однако вы можете включить флаг -i
, чтобы добавить в команду подтверждение того, что вы действительно хотите удалить пользовательский файл crontab:
Output
crontab: really delete sammy's crontab? (y/n)
После получения запроса вы должны ввести y
, чтобы удалить файл crontab, или n
, чтобы отменить удаление.
Управление выводом задачи cron
Поскольку задачи cron выполняются в фоновом режиме, не всегда очевидно, что они были запущены успешно. Теперь, когда вы знаете, как использовать команду crontab
и как запланировать задачу cron, вы можете начать экспериментировать с различными способами перенаправления результатов выполнения задач cron, чтобы помочь вам отследить их успешное выполнение.
Если у вас есть агент передачи почты, например, Sendmail, который установлен и настроен на сервере, вы можете отправить результат выполнения задачи cron на электронный адрес, связанный с вашим профилем пользователя Linux. Также вы можете вручную задать адрес электронной почты, указав параметр MAILTO
вверху crontab.
Например, вы можете добавить следующие строки в файл crontab. К ним относятся оператор MAILTO
, за которым следует пример адреса электронной почты, директива SHELL
, которая указывает оболочку для запуска (в данном примере bash
), директива HOME
, указывающая путь поиска бинарного файла cron, и единственная задача cron:
. . .
MAILTO="[email protected]"
SHELL=/bin/bash
HOME=/
* * * * * echo ‘Run this command every minute’
Эта конкретная задача будет возвращать «Run this command every minute», а этот вывод будет отправляться каждую минуту на адрес электронной почты, заданный директивой MAILTO
.
Также вы можете перенаправить вывод задачи cron в файл журнала или в пустую директорию, чтобы не получать электронное сообщение с выводом.
Чтобы добавить вывод запланированной команды в файл журнала, добавьте >>
в конец команды, после чего укажите имя и расположение файла журнала, как показано здесь:
* * * * * echo ‘Run this command every minute’ >> /directory/path/file.log
Скажем, что мы хотим использовать cron для запуска скрипта, но скрипт при этом должен выполняться в фоновом режиме. Для этого вы можете перенаправить вывод скрипта в пустую директорию, например /dev/null
, которая немедленно удаляет все данные, добавляемые в нее. Например, следующая команда cron выполняет скрипт PHP и запускает его в фоновом режиме:
* * * * * /usr/bin/php /var/www/domain.com/backup.php > /dev/null 2>&1
Эта задача cron также перенаправляет стандартную ошибку — представляемую как 2
— в стандартный вывод (>&1
). Поскольку стандартный вывод уже перенаправляется в директорию /dev/null
, это позволяет запускать скрипт без лишнего шума. Даже если в crontab содержится оператор MAILTO
, вывод команды не будет отправляться на заданный адрес электронной почты.
Ограничение доступа
Вы можете управлять тем, каким пользователям разрешается использовать команду crontab
, с помощью файлов cron.allow
и cron.deny
, которые хранятся в директории /etc/
. Если файл cron.deny
существует, любой пользователь, который будет указан в нем, не будет иметь возможность менять файл crontab. Если cron.allow
существует, то только пользователи, указанные в нем, будут иметь возможность изменять файлы crontab. Если оба файла существуют, и пользователь указан в каждом файле, файл cron.allow
будет иметь приоритет над cron.deny
, и этот пользователь сможет изменять файл crontab.
Например, чтобы запретить доступ для всех пользователей, а затем предоставить доступ пользователю ishmael, вы можете использовать следующую последовательность команд:
- sudo echo ALL >>/etc/cron. deny
- sudo echo ishmael >>/etc/cron.allow
Сначала мы закрываем доступ для всех пользователей, добавив ALL
в файл cron.deny
. Затем, добавив имя пользователя в файл cron.allow
, мы предоставим пользователю ishmael доступ к выполнению задач cron.
Обратите внимание, что если пользователь имеет права sudo
, он может изменять файл crontab другого пользователя с помощью следующей команды:
Однако, если cron.deny
существует, и user добавлен в него, но не указан в файле cron.allow
, вы получите следующую ошибку после запуска предыдущей команды:
Output
The user user cannot use this program (crontab)
По умолчанию большинство демонов cron полагает, что все пользователи имеют доступ к cron, если только не существует cron.allow
или cron.deny
.
Специальный синтаксис
Существует также несколько коротких команд, которые вы можете использовать в файле crontab, чтобы упростить процесс создания расписания задач. Они являются эквивалентом для указанных примеров числового расписания:
Сокращение | Краткая запись для |
---|---|
@hourly | 0 * * * * |
@daily | 0 0 * * * |
@weekly | 0 0 * * 0 |
@monthly | 0 0 1 * * |
@yearly | 0 0 1 1 * |
Примечание. Не все демоны cron могут понимать этот синтаксис (в частности, более ранние версии), поэтому рекомендуем убедиться в этом, прежде чем широко использовать подобный синтаксис.
Кроме того, краткая запись @reboot
будет запускать любую команду, которая следует за ней при каждом запуске сервера:
@reboot echo "System start up"
Использование этих комбинаций при возможности поможет понимать расписание задач в вашем файле crontab.
Заключение
Cron — это гибкая и мощная утилита, которая позволяет снизить количество ресурсов, затрачиваемых на администрирование системы. Используя cron вместе со скриптами оболочки, вы можете автоматизировать задачи, которые обычно вызывают затруднения. Например, вы можете написать скрипт оболочки для отправки резервных копий данных решению хранилища объектов и затем автоматизировать его с помощью cron.
Простая настройка cron на linux
Я многое слышал о том, что в linux есть удобный планировщик задач cron. Однако, у меня не было необходимости им пользоваться, и разбираться в его настройки не хотелось… консоль, много английских букавок… было страшно. Но, благо, мои опасения были напрасны — всё до элементарного просто. В статье будет рассмотрено, как настроить выполнение своих скриптов по расписанию, и в качестве примера установим «кукушку».
Для начало немного о том, как это вообще работает.
При запуски системы стартует демон cron. Им можно управлять (останавливать/запускать/узнавать статус) командой: sudo service cron (stop/start/status). Но это редко, когда бывает нужно.
Сам демон cron большую часть времени спит, и слегка приоткрывает глаз раз в минуту, что бы проверить наличие заданий на это время. Если задания отсутствуют, то он опять уходит в спячку.
Задания находятся в файлах имена которые равны именам пользователя, а сами файлы лежат в папке /var/spool/cron/crontabs. Папка защищена от постороннего вмешательства и доступна только суперпользователю. Но, каждый пользователь может настроить расписание для своих задач, не зная пароля от рута (суперпользователя).
Что бы настроить cron для обычного пользователя достаточно набрать:
crontab -e
Если нужно создать задачу для другого пользователя, то запуск производится командой:
sudo crontab -u user -e
Заместо юзера пишем нужного пользователя, например root.
При первом запуске будет вопрос о редакторе… мне нравится nano. Он простой и запускается без графического интерфейса.
Синтаксис для задач очень прост. Рассмотрим пример со скриншота по запуску кукушки:
0 */1 * * * /home/zegi/bin/kuku
Всего в задаче 2 основных поля: 0 */1 * * * — обозначает время, когда будет срабатывать команда. А /home/zegi/bin/kuku — путь к скрипту в котором описана команда(ы).
С адресом к скрипту не должно быть проблем (zegi — это имя пользователя… не забудьте поставить своё). Но нужно пояснить, как задать крону время для выполнения скрипта.
Всего у нас 5 ячеек для ввода, которые разделяются пробелом.
1 — минуты (числа от 0 до 59)
2 — часы (от 0 до 23)
3 — день месяца (от 1 до 31)
4 — месяц в году (от 1 до 12… например февраль это 2)
5 — день в недели (от 1 до 7. Используется западная неделя, когда началом является воскресенье. т.е. ВС-1, ПН-2, ВТ-3, СР-4, ЧТ-5, ПТ-6, СБ-7).
Каждая ячейка обязательна должна быть заполнена. Если нужно, что бы команда выполнялась каждый месяц, то ставим * в 4-ом поле. Тоже самое относится и к остальным полям.
Вернёмся к примеру с кукушкой, когда скрипт срабатывает каждый час. Что бы задать периодичность используется /. Например если нужно, что бы задача выполнялась каждых 5 минут, по понедельникам то ставим:
*/5 * * * 2
Если нужно, что бы задача выполнялась каждый час, то придётся устанавливать и определённую минуту. Если оставить звёздочку(* */1 * * *), то крон будет выполнять каждую минуту — ибо условия соблюдены: он проверил все 5 ячеек и их значение соотвтествует текущему времени (минуты — всё равно. Часы — каждый час, а не только определённые).
Перед слешем всегда должна идти звёздочка. Например, назначить выполнение каждую минуту, начиная с 30-ой, вписав 30/1 — не получится.
Если нужно, что бы задача выполнялась не циклично, но несколько раз, то значения пишутся через запятую.
Например нужно выполнить задачу по будням в 12 часов дня и 6 вечера. То это будет выглядеть так:
* 12,18 * * 2,3,4,5,6
По окончанию редактирования задач, не забудьте сохранить изменения (Ctrl+O > энтер), а затем можно выйти (Ctrl+x).
Cron должен оповестить, что появилась новая задача и он готов её выполнять, написав: «crontab: installing new crontab».
Посмотреть созданные задачи (может быть вы ничего и не делали для себя, а администратор сети, что нибудь вам настроил) можно командой:
crontab -l
И в конце сам скрипт кукушки, который кукукает каждый час:
#!/bin/bash
h=`date +%l`
while [ $h -gt 0 ]
do
play ~/kukushka.wav
h=$[$h-1]
done
Скачать звук с кукушкой можно командой:
wget http://dl.dropbox.com/u/24844052/tuksik/kukushka.wav
Play входит в пакет sox. В ubuntu его можно установить командой:
sudo apt-get install sox
Похожие статьи:
Настройка cron-заданий на выделенном сервере Dedicated с ISPmanager и без панели управления
Настройка cron-заданий на сервере без панели управления ISPmanager
Для просмотра, редактирования и добавления новых задач откройте командную строку и выполните команду: crontab -e
Обратите внимание
Добавляйте задачи от имени того пользователя, под которым вы авторизованы. Не рекомендуется добавлять задачи под root-пользователем, так как это может негативно сказаться на безопасности вашего сервера.
Задачи добавляются в формате: минута час день месяц день_недели /путь_к_файлу
Минуты, часы, дни, месяцы и день недели могут быть заданы тремя способами.
Комбинация | Что это значит? | Пример | Комментарий |
---|---|---|---|
1. символ * | Задача будет повторяться каждую минуту, час или день и т.д. | * /path/to/file | Cron-задание будет запускать задачу каждую минуту. |
2. цифра | Задача будет запускаться в определённое время. | 5 /path/to/file | Cron-задание будет запускать задачу каждый час в 05 минут. |
3. /цифра | Задача запускается с определённым интервалом. | /3 * /path/to/file | Cron-задание будет запускать задачу через каждые три часа. |
Примеры команд для cron-заданий
Запуск задания через get
Используется, если cron-задание должно запускаться с учётом контекста движка:
get http://site.ru/script.php
где site.ru — имя вашего домена, а script.php — имя файла с заданием.
Запуск задания через wget
Альтернативный вариант запуска cron-задания с учётом контекста движка:
wget -q -O - http://site.ru/script.php > /dev/null 2>&1
где site.ru — имя вашего домена, а script.php — имя файла с заданием.
Запуск задания под разными версиями PHP
При добавления cron-задания с помощью команд get или wget, PHP-скрипт будет запускаться тем интерпретатором PHP, версия которого активирована в панели управления хостингом.
Если необходимо выполнять скрипт под другой версией PHP, запустите cron-задание через CLI.
Обратите внимание
Скрипты можно запускать и через php и через php-cgi. Например:
- /opt/php/5. 4-with-xcache/bin/php-cgi
- /opt/php/5.4-with-xcache/bin/php
О том, какой режим подойдёт для работы скриптов, вы можете узнать у разработчиков вашего сайта.
Запуск задания через CLI
Cron-задание можно выполнить в командной строке. Например, если требуется запустить скрипт под версией PHP 5.3:
Для ISPmanager:
/opt/php/5.3/bin/php -f /var/www/user_name/data/www/site.ru/script.php
где user_name — имя пользователя, site.ru — имя вашего домена, script.php — имя файла с cron-заданием.
Планировщик CRON — как настроить в ISPmanager, Cpanel, Plesk? Запуск php скрипта
Cron (Command Run ON) — планировщик задач. Используется для выполнения команд и скриптов на сервере хостинга в определённое время. Планировщик cron доступен после заказа услуги хостинга Linux или Windows.
Как добавить новую задачу на хостинге Linux
Управлять заданиями планировщика можно в панели управления веб-хостингом.
Внимание
На виртуальном хостинге вы можете запланировать только пользовательские задачи, например, выполнение скрипта сайта. Выполнение системных задач (перезагрузка веб-сервера или сервера баз данных) недоступно.
-
1.
Войдите в панель управления хостингом. -
2.В разделе «Главное» выберите пункт Планировщик и нажмите Создать:
-
3.Заполните поля:
- Команда — введите команду для запуска, которая должна выполняться. Примеры команд приведены в разделе ниже,
- Описание — введите описание,
- Расписание — выберите тип расписания и в оставшихся полях задайте периодичность выполнения задания.
Нажмите Ok:
-
1.
Войдите в панель управления хостингом. -
2.В разделе «Расширенный» нажмите Запланированные задания:
-
3.В поле Общие параметры задайте период выполнения задания, а в поле Команда введите команду для запуска, которая должна выполняться. Примеры команд приведены в разделе ниже. Нажмите Добавить новое запланированное задание:
- org/HowToStep»>
-
2.Перейдите в раздел «Сайты и домены». Нажмите Планировщик задач:
-
3.Нажмите Добавить задачу:
-
4.Выберите Тип задачи:
- Если вы выбрали Выполнить команду, в поле Команда введите команду для запуска, которая должна выполняться. Примеры команд приведены в разделе ниже;
- Если вы выбрали Получить URL-адрес, в поле URL-адрес укажите URL-адрес, где находится скрипт. При этом команду писать не нужно;
=688×154
- Если вы выбрали Выполнить PHP-скрипт, в поле Путь к скрипту укажите путь к скрипту относительно папки виртуального сервера, а в поле Аргументы укажите аргументы скрипта, если они есть. В поле Использовать версию PHP выберите версию PHP.
Заполните остальные поля, они одинаковы для всех типов задач:
Запустить — выберите в раскрывающемся списке периодичность выполнения задания и назначьте время исполнения,
Описание — введите описание,
Уведомлять — выберите тип уведомлений.
Нажмите OK:
Готово, вы добавили новую задачу в планировщике cron.
1.
Войдите в панель управления хостингом.
Примеры команд для cron-заданий
Запуск задания через GET
Команда для запуска:
GET http://domain.ru/script.php
Где http://domain.ru/script.php — URL-адрес, при обращении к которому будет выполняться сron-задание.
Запуск задания через WGET
Альтернативный вариант команды для запуска:
wget -q -O - http://domain.ru/script.php > /dev/null 2>&1
Где http://domain. ru/script.php — URL-адрес, при обращении к которому будет выполняться cron-задание.
Запуск задания через CLI
При запуске задания через GET или WGET, PHP-скрипт запускается тем интерпретатором PHP, версия которого активирована в панели управления хостингом. Если вам необходимо выполнить скрипт под другой версией PHP, запустите cron-задание через CLI.
Команды для запуска:
/opt/php/7.4/bin/php -f /var/www/u1234567/data/www/domain.ru/script.php
/opt/php/7.4/bin/php -f /var/www/u1234567/public_html/domain.ru/script.php
/opt/php/7.4/bin/php -f var/www/vhosts/u1234567.plsk.regruhosting.ru/httpdocs/domain.ru/script.php
Где:
7.4 — версия PHP: Как узнать версию PHP на хостинге,
u1234567 — ваш логин хостинга: Как узнать пароль хостинга,
domain.ru — имя вашего домена,
script.php — имя файла с cron-заданием.
Обратите внимание: скрипты можно запускать через php (/opt/php/7. 4/bin/php) и через php-cgi (/opt/php/7.4/bin/php-cgi). О том, какой режим подойдёт для работы скриптов, вы можете узнать у разработчиков вашего сайта.
Запуск задания через CLI с учётом параметров php.ini
Добавьте к командам ключ «-c» и пропишите полный путь до файла php.ini.
Команды для запуска:
Есть два варианта пути к файлу php.ini, который зависит от того, включена ли опция php.ini для домена. Определите путь по инструкции в статье Где находятся настройки версий PHP в ISPmanager.
Если вы храните настройки PHP отдельно для каждого домена по пути /var/www/php-bin/имя-домена/php.ini, то команда выглядит так:
/opt/php/7.4/bin/php -c /var/www/u1234567/data/php-bin/domain.ru/php.ini -f /var/www/u1234567/data/www/domain.ru/script.php
Если вы используете общую версию PHP и храните настройки для всех доменов по пути /var/www/php-bin-php(номер-версии)/php.ini, то команда выглядит так:
/opt/php/7. 4/bin/php -c */var/www/u1234567/data/php-bin-php(номер-версии)/php.ini* -f /var/www/u1234567/data/www/domain.ru/script.php
/opt/php/7.4/bin/php -c /var/www/u1234567/php-bin/php.ini -f /var/www/u1234567/public_html/domain.ru/script.php
/opt/php/7.4/bin/php -c /var/www/vhosts/u1234567.plsk.regruhosting.ru/php-bin/php.ini -f var/www/vhosts/u1234567.plsk.regruhosting.ru/httpdocs/domain.ru/script.php
Где:
7.4 — версия PHP: Как узнать версию PHP на хостинге,
u1234567 — ваш логин хостинга: Как узнать пароль хостинга,
domain.ru — имя вашего домена,
script.php — имя файла с cron-заданием.
Как добавить новую задачу на хостинге Windows
Воспользуйтесь инструкцией для Plesk по инструкции выше.
Если в 4 пункте инструкции вы выбрали тип задачи Выполнить PHP-скрипт, в поле Путь к скрипту укажите путь к скрипту, а в поле Аргументы укажите аргументы скрипта в зависимости от модуля:
На PHP
На ASP/ASP. NET
Путь к скрипту:
C:\Program Files (x86)\Parallels\Plesk\Additional\PleskPHP74\php.exe
Где PleskPHP74 — версия PHP: Как узнать версию PHP на хостинге.
Аргументы:
c:\inetpub\vhosts\u1234567.plsk.regruhosting.ru\httpdocs\domain.ru\script.php
Где:
u1234567 — ваш логин хостинга: Как узнать логин хостинга,
domain.ru — имя вашего домена,
script.php — имя файла с cron-заданием.
Путь к скрипту:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
Аргументы:
Arguments: -c "(new-object system.net.webclient).downloadstring('[http://domain.ru/script.aspx](http://mysite.ru/script.aspx)')"
Где http://domain.ru/script.php — URL-адрес, при обращении к которому будет выполняться CRON-задание.
Готово, вы добавили новую задачу в планировщике cron.
Внимание
Если вы выполнили все шаги инструкции, но не получили желаемого результата, это может быть связано с локальными настройками. Напишите заявку в службу поддержки, наши специалисты оперативно вам помогут!
Помогла ли вам статья?
124
раза уже помогла
Как добавить задание в планировщик cron в Linux/UNIX
wСегодня мы расскажем о том, чем хорош планировщик Cron. Итак, Cron используется для планирования задач, которые будут выполняться периодически. Вы можете настроить команды или сценарии, которые будут повторяться в заданное время. Cron — один из самых полезных инструментов в Linux или UNIX. Служба(daemon) cron работает в фоновом режиме и постоянно проверяет файл /etc/crontab и каталог /etc/cron.*/. Он также проверяет каталог /var/spool/cron/.
Команда Crontab
Crontab — это команда, используемая для установки, удаления или вывода файла конфигурации cron, используемого для управления демоном cron. Каждый пользователь может иметь свой собственный файл задач crontab, и хотя эти файлы хранятся в /var/spool/cron/crontabs, они не предназначены для прямого редактирования. Вам нужно использовать команду crontab для редактирования или настройки ваших собственных заданий, чтобы планировщик Cron работал корректно.
Типы файлов конфигурации cron
Существуют различные типы файлов конфигурации:
Системный Сrontab: Обычно используется системными службами и критическими заданиями, требующими привилегий root доступа. Шестое поле (см. ниже описание поля) — это имя пользователя которое по умолчанию присвоено команде. Это дает системе возможность запускать команды от разных пользователей.
Пользовательский crontab: Пользователь может установить свои собственные задания в программе планировщик Cron, используя команду crontab. Шестое поле — это команда для запуска, и все команды будут выполняться от пользователя, который задал их в своем собственном crontab.
Как установить, создать или отредактировать собственные задания cron?
Чтобы отредактировать файл crontab, введите следующую команду в командной строке оболочки Unix / Linux:
$ crontab -e
Синтаксис crontab (описание полей)
Синтаксис:
1 2 3 4 5 /path/to/command arg1 arg2
НАПРИМЕР
1 2 3 4 5 python3 main. py
Где цифры обозначают:
1: Минуты (0-59)
2: Часы (0-23)
3: День (0-31)
4: Месяц (0-12 [12 == Декабрь])
5: День недели (0-7 [7 или 0 == sunday])
/path/to/command — имя скрипта или команды для выполнения по расписанию
Легко запоминаемый формат:
* * * * * Команда, которая будет выполнена
- - - - -
| | | | |
| | | | - День недели (0 - 7) (воскресенье = 0 или 7)
| | | --- Месяц (1 - 12)
| | --- День месяца (1 - 31)
| ---- Час (0 - 23)
----- Минута (0 - 59)
Пример
# выполнять скрипт myscript каждые 5 минут #
*/5 * * * * /root/myscript.sh
# выполнять скрипт myscript каждый день в час ночи #
0 1 * * * /root/myscript.sh
# выполнять скрипт каждый месяц первого числа в три часа ночи пятнадцать минут #
15 3 1 * * /root/myscript. sh
Как использовать операторы?
Оператор позволяет указать несколько значений в поле. Существует три оператора:
Звездочка (*): этот оператор задает все возможные значения для поля. Например, звездочка в поле «Часы» будет эквивалентна каждому часу, а звездочка в поле месяца будет эквивалентна каждому месяцу и т.д.
Запятая (,): Этот оператор задает список значений, например: «1,5,10,15,20,25».
Тире (-): Этот оператор задает диапазон значений, например: «5-15» дней, что эквивалентно набору «5,6,7,8,9 … …, 13,14,15», при использования оператора «Запятая».
Слеш (/): этот оператор задает значение шага, например: «0-23 /» можно использовать в поле часов, чтобы указывать выполнение команды каждый час. Шаги также разрешены после звездочки, поэтому, если вы хотите выполнять что-то каждые два часа, просто используйте «*/2».
Используйте специальную строку, чтобы сэкономить время
Вместо первых пяти полей вы можете использовать любую из восьми специальных строк. Планировщик Cron позволяет такую настройку. Это не только сэкономит ваше время, но и улучшит читаемость.
Специальная строка | Значение |
@reboot | Запускается только один раз при запуске. |
@yearly | Запускается раз в год, «0 0 1 1 *». |
@annually | Такое же, как у @yearly |
@monthly | Запускается раз в месяц, «0 0 1 * *». |
@weekly | Выполняется раз в неделю, «0 0 * * 0». |
@daily | Выполняется один раз в день, «0 0 * * *». |
@midnight | Такое же, как у @daily. |
@hourly | Запускается один раз в час, «0 * * * *». |
Пример:
# Запуск main.py каждый час #
@hourly python3 main.py
Подробнее о файле /etc/crontab и /etc/cron.
d/*
/etc/crontab — это файл crontab системы. Обычно используется только пользователем root или для настройки системных задач. Обычные пользователи должны использовать команду crontab для установки и редактирования своих заданий. /var/spool/cron/ или /var/cron/tabs/ — это каталог для личных файлов пользователя crontab.
Типичные записи файла /etc/crontab:
SHELL = /bin/bash
PATH = /sbin:/bin:/usr/sbin:/usr/bin
MAILTO = root
HOME = /
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
Первым делом необходимо определить среду. Если указатель оболочки упущен, cron будет использовать значение по умолчанию, которое равно sh. Если переменная PATH не указана, расположение файлов будет абсолютным. Если перемененная HOME упущенная, cron будет использовать домашний каталог.
Кроме того, cron считывает файлы в каталоге /etc/cron.d/. Обычно это файлы демона системы, такие как sa-update или sysstat. В качестве пользователя root, для настройки заданий cron, вы можете использовать каталоги которые указаны ниже. Здесь вы можете напрямую запускать свои скрипты. Команда run-parts запускает скрипты или программы в каталоге через /etc/crontab файл:
Каталог | Описание |
/etc/cron.d/ | Поместите в эту директиву все скрипты и вызовите их из файла /etc/crontab |
/etc/cron.daily/ | Запуск всех скриптов один раз в день |
/etc/cron.hourly/ | Запуск всех скриптов один раз в час |
/etc/cron.monthly/ | Запуск всех скриптов один раз в месяц |
/etc/cron.weekly/ | Запуск всех скриптов один раз в неделю |
Сохранение списка заданий в файл
# crontab -l > /path/to/file
# crontab -u user -l > /path/to/file
Спасибо за уделенное время на прочтение статьи!
Если возникли вопросы, задавайте их в комментариях.
Подписывайтесь на обновления нашего Блога и оставайтесь в курсе новостей мира инфокоммуникаций!
Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco от Академии Cisco, курсы Linux от Linux Professional Institute на платформе SEDICOMM University.
Курсы Cisco и Linux с трудоустройством!
Спешите подать заявку! Осталось пару мест. Группы стартуют 22 июля, а следующая 19 августа, 23 сентября, 21 октября, 25 ноября, 16 декабря, 20 января, 24 февраля.
Что Вы получите?
- Поможем стать экспертом в сетевом администрировании и получить международные сертификаты Cisco CCNA Routing & Switching или Linux LPI.
- Предлагаем проверенную программу и учебник экспертов из Cisco Networking Academy и Linux Professional Institute, сертифицированных инструкторов и личного куратора.
- Поможем с трудоустройством и сделать карьеру. 100% наших выпускников трудоустраиваются.
Как проходит обучение?
- Проводим вечерние онлайн-лекции на нашей платформе или обучайтесь очно на базе Киевского офиса.
- Спросим у вас об удобном времени для практик и подстроимся: понимаем, что времени учиться мало.
- Если хотите индивидуальный график — обсудим и осуществим.
- Выставим четкие дедлайны для самоорганизации. Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
А еще поможем Вам:
- отредактировать резюме;
- подготовиться к техническим интервью;
- подготовиться к конкурсу на понравившуюся вакансию;
- устроим на работу в Cisco по программе Cisco Incubator, New Graduate и Experienced. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.
Чтобы учиться на курсах Cisco CCNA Routing & Switching и Linux LPI, подайте заявку или получите бесплатную консультацию.
Планировщик Cron в Linux — VPS.ua Wiki
В Linux периодическим выполнением управляет демон cron. Он запускается на этапе начальной загрузки системы и выполняется в фоновом режиме до тех пор, пока система не будет выключена. Cron читает файлы конфигурации, содержащие списки команд и расписание их вызова. Команды обычно обрабатываются интерпретатором sh (системной консолью Linux), поэтому почти все команды, которые можно выполнять в консоли вручную, можно перепоручить демону cron.
Файлами конфигурации демона управляет команда crontab, поэтому их называют crontab-файлами. В системе существует множество crontab-фалов, однако мы будем вносить изменения в /etc/crontab. Обратите внимание, что в дистрибутивах CentOS и Fedora демон cron переименован в crond.
Каждая строка crontab-файла, не являющаяся комментарием содержит шесть или семь полей и представляет одну команду. Стандартная строка имеет вид:
- минута час день месяц день_недели [имя_пользователя] команда
Поле имя_пользователя определяет пользователя, от имени которого будет выполняться команда. В полях минута час день месяц день_недели содержится информация о времени запуска команды. Описание данных полей приведено в таблице ниже:
Поле | Описание | Диапазон |
---|---|---|
минута | Минута часа | От 0 до 59 |
час | Час дня | От 0 до 23 |
день | День месяца | От 1 до 31 |
месяц | Месяц года | От 1 до 12 |
день_недели | День недели | От 0 до 6 (0 — воскресенье) |
Каждое из полей может содержать:
- звездочку, которая обозначает любую цифру;
- целое число;
- два разделенных дефисом целых числа, задающих диапазон значений;
- целые числа или диапазоны, разделенные запятыми (время соответствует любому из значений).
Например, последовательность 0,3,6,9,12,15,18 можно записать как 0-18/3. Строка 45 10 * * 1-5 означает «В 10 часов 45 минут, с понедельника по пятницу».
(!) Никогда не ставьте звездочку в первое поле, иначе команда будет выполняться каждую минуту, что приведет к чрезмерной нагрузке на ВПС.
С полями день_недели и день связана двусмысленность, которую необходимо учитывать. День можно рассматривать как день недели, так и как число месяца. Если указаны оба поля, то дню необходимо соответствовать одному из этих условий, что бы пройти отбор и запустить выполнение задачи. К примеру, спецификация 0,30 * 13 * 5 означает «каждые полчаса по пятницам и каждые полчаса тринадцатого числа месяца», но не «каждые полчаса в пятницу 13-го».
Инструкции настройки cron для создания бекапов тем или иным способом Вы можете найти по ссылкам ниже.
Данная статья поможет настроить планировщик задач таким образом, чтобы он создавал резервные копии баз данных и данных Вашего VPS для сайтов.
Читать дальше →
Путь в файлу настройки Cron Linux
Где найти файл настройки Cron Linux / UNIX Crontab File Location
Планировщик задач в Linux под названием Cron служит для запланированного запуска сервисов и выполняемых скриптов по назначенному времени.
Как узнать местоположение конфигурационного файла crontab для планировщика Cron в Linux?
Для начала получим список (list) всех запускаемых задач (скриптов) в кроне:
Расположение файлов для разных версий операционных систем:
- Mac OS X – /usr/lib/cron/tabs/ (user cron location /usr/lib/cron/tabs/vivek)
- FreeBSD/OpenBSD/NetBSD – /var/cron/tabs/ (user cron location /var/cron/tabs/vivek)
- CentOS/Red Hat/RHEL/Fedora/Scientific Linux – /var/spool/cron/ (user cron location /var/spool/cron/vivek)
- Debian / Ubuntu Linux – /var/spool/cron/crontabs/ (user cron location /var/spool/cron/crontabs/vivek)
- HP-UX Unix – /var/spool/cron/crontabs/ (user cron location /var/spool/cron/crontabs/vivek)
- IBM AIX Unix – /var/spool/cron/ (user cron location /var/spool/cron/vivek)
Временные параметры конфигурации планировщика Cron
Поле | Диапазон значений | Описание |
minute | 0-59 | Минута запуска команды |
hour | 0-23 | Час запуска |
day | 1-31 | Число (день) запуска |
month | 1-12 | Месяц запуска |
weekday | 0 — 6 | День недели запуска (воскресенье = 0, понедельник = 1, вторник = 2 и т. д.) |
command | Последовательность команд для выполнения. Это могут быть команды, исполняемые файлы (например, скрипты) или комбинации файлов. |
Настройка Cron — примеры использования
Запуск скрипта каждый понедельник в 8:00 и 19:00 часов
Запуск скрипта каждый день в 0:30 и 11:30
Запуск скрипта каждый месяц 1 числа в 11:00:
После изменения информации в конфигурационном файле необходимо перегрузить службу cron:
Если Вам необходима разработка скриптов для интернет магазина, настройка планировщик cron или администрирование хостинга — обращайтесь в нашу компанию и грамотные специалисты помогут в этом.
Комментарии: (0)
Написать комментарий
Crontab — Краткий справочник
Настройка заданий cron в Unix, Solaris и Linux
cron — это утилита для Unix, solaris, Linux, которая позволяет демону cron автоматически запускать задачи в фоновом режиме через регулярные промежутки времени.
cron означает — окончательного объяснения нет, но большинство принятых ответов, как сообщается, от Кена Томпсона (автора unix cron), имя cron происходит от chron, греческого префикса «время».
Что такое cron? — Cron — это демон, который запускается во время загрузки системы из / etc / init.d скрипты. При необходимости его можно остановить / запустить / перезапустить с помощью сценария инициализации или с помощью команды service crond start в системах Linux.
Этот документ охватывает следующие аспекты заданий cron в Unix и Linux, чтобы помочь вам понять и успешно реализовать задания cron.
- Что такое crontab?
- Что такое задание cron или расписание cron?
- Ограничения Crontab
- Команды Crontab
- Файл Crontab — синтаксис
- Пример Crontab
- Среда Crontab
- Отключить электронную почту
- Создать файл журнала для активности crontab
- Расположение файла Crontab
1.
Что такое кронтаб?
Crontab (CRON TABle) — это файл, который содержит расписание запуска записей cron в указанное время. Расположение файла зависит от операционной системы. См. Расположение файла Crontab в конце этого документа.
2. Что такое cron job или cron schedule?
Задание Cron или расписание cron — это особый набор инструкций выполнения с указанием дня, времени и команды для выполнения. crontab может иметь несколько операторов выполнения.
3. Ограничения Crontab
Вы можете запустить crontab, если ваше имя присутствует в файле / usr / lib / cron / cron.позволять. Если этот файл не существует, вы можете использовать
crontab, если ваше имя не отображается в файле /usr/lib/cron/cron.deny.
Если существует только cron.deny и он пуст, все пользователи могут использовать crontab. Если ни один файл не существует, только пользователь root может использовать crontab. Файлы разрешения / запрета состоят из одного имени пользователя в строке.
4. Команды Crontab
export EDITOR = vi; указать редактор для открытия файла crontab.
crontab -e Отредактируйте файл crontab или создайте его, если он еще не существует.
crontab -l crontab список заданий cron, отображение содержимого файла crontab.
crontab -r Удалите файл crontab.
crontab -v Показать, когда вы в последний раз редактировали файл crontab. (Эта опция доступна только в некоторых системах.)
5. Crontab файл
Синтаксис Crontab:
Файл crontab имеет пять полей для указания дня, даты и времени, за которыми следует команда, которая будет запускаться через этот интервал.
* в поле значения выше означает все допустимые значения, указанные в фигурных скобках для этого столбца.
Столбец значений может иметь символ * или список элементов, разделенных запятыми. Элемент представляет собой либо число в диапазонах, показанных выше, либо два числа в диапазоне, разделенных дефисом (что означает полный диапазон).
Примечания
A.) Повторять шаблон, например / 2, каждые 2 минуты или / 10 для каждые 10 минут поддерживается не всеми операционными системами. Если вы попытаетесь использовать его, и crontab пожалуется, что он, вероятно, не поддерживается.
B.) Указание дней может быть выполнено в двух полях: день месяца и день недели.Если оба указаны в записи, они являются кумулятивными, что означает, что обе записи будут выполнены.
6. Примеры Crontab
Строка в файле crontab, как показано ниже, удаляет файлы tmp из / home / someuser / tmp каждый день в 18:30.
30 18 * * * rm / home / someuser / tmp / *
Crontab каждый час
Чаще всего используется для запуска cron каждый час и выполнения команды через интервал в один час.
crontab format каждый час — это просто иметь поле часа как *, которое запускается каждый час, когда часы переключаются на новый час. если вы хотите запустить его в начале часа, поле минут должно быть 0 или любые другие минуты, если вы хотите запустить его в определенную минуту часа.
cron каждый час для запуска в начале часа. 00 * * * * RM / Home / someuser / tmp / *
cron каждый час для запуска через 15 минут в час ..
15 * * * * rm / home / someuser / tmp / *
крон каждую минуту
Для запуска cron каждую минуту сохраните поле минут как *, так как изменение минут на новую минуту cron будет выполняться каждую минуту.если вы хотите запускать его непрерывно каждый час, тогда поле часа также должно иметь значение *.
* * * * * rm / home / someuser / tmp / *
, если вы хотите запускать сценарий каждую минуту в определенный час, измените значение поля часа на определенное значение, например, 11-й час.
* 11 * * * RM / Home / someuser / tmp / *
Другие примеры crontab
Изменение значений параметров, как показано ниже, приведет к тому, что эта команда будет выполняться по другому расписанию, указанному ниже:
мин | час | день / мес | мес | день / неделя | Время исполнения |
30 | 0 | 1 | 1,6,12 | * | — 00:30 1 января, июня и декабря. |
0 | 20 | * | 10 | 1-5 | — 20.00 каждый будний день (пн-пт) только в октябре |
0 | 0 | 1,10,15 | * | * | — полночь 1, 10 и 15 числа месяца |
5,10 | 0 | 10 | * | 1 | — В 12. 05,12.10 каждый понедельник и 10 числа каждого месяца |
: |
Примечание: Если вы случайно введете команду crontab без аргументов, не пытайтесь выйти с помощью Control-d. Это удалит все записи в вашем файле crontab. Вместо этого выйдите с помощью Control-c.
7. Среда Crontab
cron вызывает команду из домашнего каталога пользователя с оболочкой (/ usr / bin / sh).
cron предоставляет среду по умолчанию для каждой оболочки, определяя:
HOME = домашний-каталог пользователя
LOGNAME = идентификатор-логина пользователя
ПУТЬ = / usr / bin: / usr / sbin :.
ОБОЛОЧКА = / usr / bin / sh
Пользователи, желающие выполнить свой .profile, должны явно сделать это в записи crontab или в сценарии, вызываемом этой записью.
8. Отключить электронную почту
По умолчанию задания cron отправляют электронное письмо учетной записи пользователя, выполняющей задание cron. Если в этом нет необходимости, поместите следующую команду в конец строки задания cron.
> / dev / null 2> & 1
9. Создайте файл журнала
Для сбора журнала выполнения cron в файл:
30 18 * * * rm / home / someuser / tmp / *> / home / someuser / cronlogs / clean_tmp_dir.журнал
10. Расположение файла Crontab
Файлы crontab пользователей хранятся под именами пользователей в разных местах в разных версиях Unix и Linux. Эти файлы полезны для резервного копирования, просмотра и восстановления, но пользователи должны редактировать их только с помощью команды crontab.
- Mac OS X
/ usr / lib / cron / tabs / - BSD Unix
/ var / cron / tabs / - Solaris, HP-UX, Debian, Ubuntu
/ var / spool / cron / crontabs / - AIX, Red Hat Linux, CentOS, Фердора
/ var / spool / cron /
Создание пользовательского задания Cron — База знаний DreamHost
Обзор
В этой статье показано, как вручную создать настраиваемое задание cron с помощью пользователя Shell. Он включает в себя вход на сервер через SSH для выполнения нескольких команд.
Эти инструкции также можно использовать для редактирования существующего задания cron, созданного вами на панели, однако для простоты рекомендуется, если вы создали его на панели, продолжайте редактировать его с панели. Это важно, поскольку добавление задания cron в панель перезапишет ваш пользовательский файл crontab, как указано ниже.
В следующих примерах именем пользователя будет ваш пользователь Shell и пример .com ваш сайт.
Основные сведения
В файлах crontab хранятся списки заданий и другие инструкции для демона cron. У каждого пользователя DreamHost есть свой индивидуальный файл crontab, к которому можно получить доступ, выполнив следующую команду под вашим пользователем Shell:
Файлы
Crontab — это простые текстовые файлы определенного формата. Каждая строка файла crontab следует определенному формату в виде серии полей, разделенных пробелами и / или табуляциями. Каждое поле может иметь одно значение или серию значений.Одно задание cron должно занимать ровно одну строку, но это может быть длинная строка (более 80 символов).
На что следует обратить внимание при редактировании / создании crontab
Каждая строка имеет пять полей времени / даты, за которыми следует команда, за которой следует символ новой строки (‘\ n’). Распространенной проблемой является отсутствие новой строки, поэтому нажмите «Enter / Return» раз или три в конце вашей команды.
Другая распространенная проблема — автоматический перенос слов, разбивающий длинную строку на несколько строк, поэтому убедитесь, что ваш текстовый редактор этого не делает.
Пустые строки и начальные пробелы и табуляторы игнорируются. Строки, первым непробельным символом которых является знак решетки (#), игнорируются, поскольку они считаются комментариями. Обратите внимание, что комментарии не разрешены в той же строке, что и команды cron, поскольку они интерпретируются как часть команды. Точно так же нельзя оставлять комментарии в той же строке, что и настройки переменных среды (например, MAILTO).
Что делать, если я уже создал задание cron на панели под моим пользователем Shell?
Существует два способа создания пользовательских заданий cron.
- Редактирование существующего crontab на сервере
- Использование специального файла crontab
Если вы редактировали существующий crontab
Если вы уже создали задание cron в своей панели, вы можете просмотреть его, запустив crontab -e под своим пользователем Shell. Если вы отредактируете файл, чтобы добавить другое задание cron под существующее задание панели, задание cron панели продолжит нормально работать в дополнение к вашему новому отредактированному коду.
Любые изменения на панели не повлияют на ваш пользовательский код.
Если вы переключили crontab сервера на свой собственный crontab
Вы также можете использовать созданный вами настраиваемый crontab. Если вы сделаете это, crontab сервера будет перезаписан. Вы можете заменить crontab сервера, запустив следующее:
[сервер] $ crontab / home / username / mycrontab
Однако, если вы затем добавите или отредактируете задание cron на панели, ваш настраиваемый crontab будет перезаписан. Поэтому вам нужно либо использовать crontab сервера, либо свой собственный crontab.
Создание специального задания cron вручную
Следующий раздел также доступен в виде обучающего видео:
В приведенных ниже инструкциях объясняется, как добавить настраиваемое задание cron под вашим пользователем Shell. Эти инструкции предполагают, что вы еще НЕ добавили задание cron в панель, поэтому файл crontab пуст.
- Войдите на свой сервер через SSH, используя пользователя Shell, под которым вы хотите создать задание cron.
- После входа в систему выполните следующую команду, чтобы открыть файл crontab.
[сервер] $ crontab -e Похоже, в вашем файле crontab нет строки MAILTO По соображениям производительности просим вас указать адрес, где Будет доставлен вывод cronjob. Если вы не хотите получать вывод cronjob, просто нажмите Enter, и вывод cronjob не будет отправлено вам по почте. Для получения дополнительной информации по этому поводу посетите: https://help.dreamhost.com/hc/en-us/articles/215088608 Куда вы хотите доставить вывод cronjob? (оставьте поле пустым, чтобы отключить) : admin @ example.com Вывод cronjob будет отправлен на адрес [email protected] подтвердить? (г / н): г
После добавления адреса электронной почты (или оставления поля пустым) вы должны выбрать текстовый редактор, который вы хотите использовать.
Выберите редактора. Чтобы изменить позже, запустите "select-editor". 1. / usr / bin / joe 2. / usr / bin / jstar 3. / usr / bin / jpico 4. / usr / bin / jmacs 5. / usr / bin / jed 6. / bin / nano <---- самый простой 7. /usr/bin/vim. basic 8. / usr / bin / rjoe 9. / usr / bin / mcedit 10. /usr/bin/vim.tiny 11. / bin / elvis-tiny 12./ usr / bin / emacs25 13. / bin / ed Выберите 1-13 [3]: 6
- Затем вам будет предложено выбрать редактор для просмотра этого файла. №6 использует программу nano, что является самым простым вариантом. Просмотрите статью Создание и редактирование файла через SSH, чтобы узнать, как использовать nano.
Указанные выше параметры отображаются, если вы вошли на общий сервер. Если вы вошли на VPS (частный сервер) под управлением Debian, вместо этого вы увидите следующий список.
Выберите редактора. Чтобы изменить позже, запустите "select-editor".1. / bin / ed 2. / bin / nano <---- самый простой 3. / usr / bin / emacs24 4. /usr/bin/vim.basic 5. /usr/bin/vim.tiny
- Откроется пустой файл crontab. Добавьте код для своей работы cron. В этом примере запускается файл mail.php под именем пользователя username. Это должно быть то же имя пользователя SSH, под которым вы сейчас вошли в систему. В этом примере задание cron запускается в 20:13.
# Пользовательское задание cron MAILTO = "[email protected]" 13 20 * * * php /home/username/mail.php
Команда состоит из двух частей.Первая часть должна указывать путь к программе, которую вы хотите использовать для запуска задания cron. Например, предположим, что у вас есть файл PHP с именем script.php в каталоге ваших доменов:
- /home/username/example.com/script.php
Чтобы запустить эту команду, вы должны ввести путь к выбранной вами версии PHP, через пробел и путь к файлу:
- / usr / local / php74 / bin / php /home/username/example.com/script.php
Вы также можете использовать версию по умолчанию, указав «php» вместо полного пути.
- Сохраните файл. Вы должны увидеть следующий ответ:
crontab: установка нового crontab
Вот и все. Теперь задание cron должно запускаться каждый день в 20:13.
Команды Crontab
Обратите внимание, что если вы решите заменить crontab сервера, все задания cron, созданные на панели для этого конкретного имени пользователя, больше не будут работать, поскольку они были бы перезаписаны на сервере.
Кроме того, если вы обновите какие-либо задания cron от имени этого пользователя на панели, он перезапишет ваш настраиваемый crontab.Crontab будет заменен в исходном виде, созданном на панели.
Замените существующий файл crontab собственным файлом crontab
[сервер] $ crontab / home / имя пользователя / имя файла
Отредактируйте crontab вашего сервера
Просмотрите свой crontab
Удалите crontab
Объяснение полей даты / времени
Первые пять полей строки - это поле даты и времени, которые определяют, как часто и когда выполнять команду.При добавлении задания cron на панель DreamHost дата и время добавляются автоматически в зависимости от вашего параметра «Когда запускать».
Поле № | Описание | Допустимые значения |
---|---|---|
1 | минут | 0-59 |
2 | час | 0-23 |
3 | число месяца | 1-31 |
4 | мес | 1-12 |
5 | день недели | 0-7 |
Для дня недели 0 и 7 считаются воскресеньем. Время основано на времени сервера, на котором запущен cron.
Другой (графический) способ просмотра этих полей.
* * * * * команда для выполнения │ │ │ │ │ │ │ │ │ │ │ │ │ │ ───── день недели (0-6) (от 0 до 6 - с воскресенья по субботу или используйте названия; 7 - воскресенье, то же, что и 0) │ │ │ └────────── месяц (1 - 12) │ │ └─────────────── день месяца (1-31) │ └───────────────────── час (0-23) └────────────────────────── мин (0-59)
В этих полях можно указать несколько значений:
- Оператор запятая (',') определяет список значений.
- Оператор тире ('-') указывает диапазон значений.
- 1-6
- Эквивалент «1,2,3,4,5,6».
- Оператор звездочки ('*') (часто называемый подстановочным знаком) указывает все возможные значения для поля. Например, звездочка в поле часа (секунды) будет эквивалентна «каждый час».
Если вы настроили запуск задания cron в определенный день недели, поля месяца и дня месяца по-прежнему будут отображаться в виде звездочки (*). Значение дня недели будет иметь приоритет над этими значениями, поэтому оно будет выполняться только один раз в неделю в выбранный вами день.
- Оператор косой черты ('/') может использоваться вместе со звездочкой, чтобы пропустить заданное количество значений. Пример:
- /3
- Это означает переход к каждому третьему значению. Таким образом, «* / 3» в поле часов эквивалентно «0,3,6,9,12,15,18,21»; «*» определяет «каждый час», но «/ 3» означает, что используются только первое, четвертое, седьмое и т. д. значения, заданные знаком «*».
Вы также можете использовать одну из этих специальных строк вместо полей времени / даты.
Запись | Описание | Эквивалент | Пример |
---|---|---|---|
@ год (или @ ежегодно) | Выполняется один раз в год в полночь 1 января | 0 0 1 1 * | @ годовой php /home/username/mail.php |
@ ежемесячно | Выполняется один раз в месяц в полночь первого числа месяца | 0 0 1 * * | @monthly php / home / username / mail. php |
@ еженедельно | Запускать раз в неделю в полночь в воскресенье утром | 0 0 * * 0 | @weekly php /home/username/mail.php |
@daily (или @midnight) | Запускать один раз в сутки в полночь | 0 0 * * * | @daily php /home/username/mail.php |
@ ежечасно | Запускать один раз в час в начале часа | 0 * * * * | @hourly php / home / username / mail.php |
@ перезагрузка | Запускать при запуске (демона cron) | @ перезагрузка | @reboot php /home/username/mail.php |
Дополнительные сведения см. В следующей статье Википедии:
Выход
Вывод задания cron определяется тем, что отправляется на терминал в результате выполняемых команд / сценария. По умолчанию весь вывод отправляется по электронной почте в расположение, указанное в переменной MAILTO (дополнительную информацию см. В статье о требованиях к переменной MAILTO).Как отмечалось выше, если ваша команда задания cron не создает никаких выходных данных в командной строке, то электронное письмо не отправляется.
Вы можете предоставить специальные инструкции для стандартного вывода (STDOUT) и стандартного вывода ошибок (STDERR) с помощью оператора ">". Когда вы используете ">" без номера перед ним, по умолчанию используется "1>". Это стандартный вывод (без ошибок).
Когда вы используете «2>», вы указываете, что делать с выводом ошибок. Так, например, «> my_file.txt» перенаправит стандартный вывод в файл с именем «my_file.txt ", а" 2> my_errors.txt "перенаправит ошибки в файл с именем" my_errors.txt ".
Разрешения
По умолчанию файлы, созданные на серверах DreamHost, имеют уровень разрешений 644. Если вы решите выполнить сценарий через cron, вам может потребоваться установить для файла разрешения 744 с помощью chmod, чтобы он мог выполняться должным образом.
Примеры кастомных скриптов cron
В следующих примерах показано, что вы можете добавить в новый файл, чтобы создать задание cron.
Пример 1 : Это запускает команду в 16:10 PDT / PST и отправляет вам по электронной почте регулярные сообщения и сообщения об ошибках в пункт назначения, указанный MAILTO.
10 16 * * * perl /home/username/bin/yourscript.pl
Пример 2 : Команда запускается в 2:00 AM PDT / PST в субботу, и единственный вывод - это ошибки.
0 2 * * 6 sh /home/username/weekly/weekly-pruning.sh> / dev / null
Пример 3 : Это выполняется в полночь в день Нового года (1 января), и нет вывода.
0 0 1 1 0 python /home/username/happy.new.years.py> / dev / null 2> & 1
2> & 1 - это специальное перенаправление, которое отправляет стандартный вывод ошибки («2>») в то же место, что и стандартный вывод («>» или «1>»).
Пример 4 : Это запускает PHP-скрипт cron.php в начале каждого часа.
0 * * * * php /home/username/cron.php
Пример 5 : Это запускает локальный сценарий (т. Е. Размещенный на DreamHost) каждые 15 минут.
* / 15 * * * * / usr / local / php74 / bin / php /home/username/myscript.php
Пример 6 : запускает внешний сценарий (т. Е. Размещенный в другом месте) каждые 30 минут с использованием curl.
* / 30 * * * * / usr / bin / curl -s https://example.com/send.php &> / dev / null
&> / dev / null - это сокращение от 1> / dev / null 2> & 1. Он перенаправляет дескриптор файла 2 (STDERR) и дескриптор 1 (STDOUT) в / dev / null.
Просмотр unix.stackexchange.com / a / 70971 для получения дополнительной информации.
Пример 7 : Это запускает локальный сценарий (т. Е. Размещенный на DreamHost) каждые 10 минут.
* / 10 * * * * / usr / local / php74 / bin / php /home/username/myscript.php
Пример 8 : Используется wget для загрузки файла в каталог с именем / cronfolder.
* / 10 * * * * / usr / bin / wget -P / home / username / cronfolder / https://example.com/index.html
Редактирование выделенного сервера
Если вы вошли в систему как пользователь с правами администратора выделенного сервера, вы можете напрямую редактировать файл crontab.Хранится здесь:
/ var / spool / cron / crontabs / имя пользователя
Для доступа к этому файлу вам нужно будет использовать sudo на выделенном сервере (или запустить интерактивный сеанс от имени пользователя root с помощью sudo -i).
Если вам требуется доступ sudo / admin, вы должны перейти на выделенный сервер.
Пример (открытие файла в текстовом редакторе vi):
[сервер] $ sudo vi / var / spool / cron / crontabs / имя пользователя
См. Также
Планирование заданий Cron с помощью Crontab
Cron - это демон планирования, который выполняет задачи с заданными интервалами.Эти задачи называются заданиями cron и в основном используются для автоматизации обслуживания или администрирования системы.
Например, вы можете настроить задание cron для автоматизации повторяющихся задач, таких как резервное копирование баз данных или данных, обновление системы с помощью последних исправлений безопасности, проверка использования дискового пространства, отправка электронных писем и т. Д.
Задания cron можно запланировать на выполнение по минуте, часу, дню месяца, месяцу, дню недели или любой их комбинации.
Что такое Crontab File #
Crontab (таблица cron) - это текстовый файл, определяющий расписание заданий cron.Есть два типа файлов crontab. Общесистемные файлы crontab и файлы crontab отдельных пользователей.
Пользовательские файлы crontab названы в соответствии с именем пользователя, а их расположение зависит от операционной системы. В дистрибутивах на основе Red Hat, таких как CentOS, файлы crontab хранятся в каталоге / var / spool / cron
, а в Debian и Ubuntu файлы хранятся в каталоге / var / spool / cron / crontabs
.
Хотя вы можете редактировать файлы crontab пользователя вручную, рекомендуется использовать команду crontab
.
Файл / etc / crontab
и сценарии в каталоге /etc/cron.d
представляют собой общесистемные файлы crontab, которые могут редактировать только системные администраторы.
В большинстве дистрибутивов Linux вы также можете помещать сценарии в каталоги /etc/cron.{hourly,daily,weekly,monthly}
, и сценарии будут выполняться каждые час / день / неделя / месяц
.
Синтаксис и операторы Crontab #
Каждая строка в пользовательском файле crontab содержит шесть полей, разделенных пробелом, за которыми следует команда, которую нужно выполнить.
* * * * * команда (и)
- - - - -
| | | | |
| | | | ----- День недели (0-7) (воскресенье = 0 или 7)
| | | ------- Месяц (1 - 12)
| | --------- День месяца (1 - 31)
| ----------- Час (0 - 23)
------------- Минуты (0-59)
Первые пять полей могут содержать одно или несколько значений, разделенных запятой, или диапазон значений, разделенных дефисом.
-
*
- Оператор звездочка означает любое значение или всегда. Если у вас есть символ звездочки в поле «Час», это означает, что задача будет выполняться каждый час. -
,
- Оператор запятой позволяет указать список значений для повторения. Например, если в поле «Час» указано1,3,5
, задача будет выполняться в 1, 3 и 5 утра. -
-
- Оператор дефиса позволяет указать диапазон значений. Если у вас есть1-5
в поле День недели, задача будет запускаться каждый будний день (с понедельника по пятницу). -
/
- Оператор косой черты позволяет указать значения, которые будут повторяться в течение определенного интервала между ними.Например, если у вас в поле «Час» указано* / 4
, это означает, что действие будет выполняться каждые четыре часа. Это то же самое, что указать0,4,8,12,16,20
. Вместо звездочки перед оператором косой черты вы также можете использовать диапазон значений,1-30 / 10
означает то же, что и1,11,21
.
Общесистемные файлы crontab #
Синтаксис общесистемных файлов crontab немного отличается от пользовательских файлов crontab. Он содержит дополнительное обязательное пользовательское поле, в котором указывается, какой пользователь будет запускать задание cron.
* * * * * <имя пользователя> команда (и)
Предопределенные макросы #
Есть несколько специальных макросов расписания Cron, используемых для определения общих интервалов. Вы можете использовать эти ярлыки вместо указания даты из пяти столбцов.
-
@yearly
(или@annually
) - запускать указанную задачу один раз в год в полночь (12:00) 1 января. Эквивалентно0 0 1 1 *
. -
@monthly
- запускать указанную задачу один раз в месяц в полночь первого числа месяца.Эквивалент0 0 1 * *
. -
@weekly
- запускать указанную задачу один раз в неделю в полночь в воскресенье. Эквивалентно0 0 * * 0
. -
@daily
- запускать указанную задачу один раз в сутки в полночь. Эквивалентно0 0 * * *
. -
@hourly
- запускать указанную задачу один раз в час в начале часа. Эквивалент0 * * * *
. -
@reboot
- Запускать указанную задачу при запуске системы (во время загрузки).
Linux Crontab Command #
Команда crontab
позволяет устанавливать, просматривать или открывать файл crontab для редактирования:
-
crontab -e
- Редактировать файл crontab или создавать его, если это не так. уже существует. -
crontab -l
- Показать содержимое файла crontab. -
crontab -r
- Удалить текущий файл crontab. -
crontab -i
- удалить текущий файл crontab с запросом перед удалением. -
crontab -u <имя пользователя>
- Редактировать файл crontab другого пользователя. Эта опция требует прав системного администратора.
Команда crontab открывает файл crontab с помощью редактора, указанного в переменных среды VISUAL
или EDITOR
.
Переменные Crontab #
Демон cron автоматически устанавливает несколько переменных среды.
- Путь по умолчанию -
ПУТЬ = / usr / bin: / bin
. Если команда, которую вы выполняете, отсутствует в указанном cron пути, вы можете использовать абсолютный путь к команде или изменить переменную cron$ PATH
.Вы не можете неявно добавить: $ PATH
, как это делали бы с обычным скриптом. - Оболочка по умолчанию -
/ bin / sh
. Чтобы изменить другую оболочку, используйте переменнуюSHELL
. - Cron вызывает команду из домашнего каталога пользователя. Переменная
HOME
может быть установлена в crontab. - Уведомление по электронной почте отправлено владельцу crontab. Чтобы перезаписать поведение по умолчанию, вы можете использовать переменную среды
MAILTO
со списком (через запятую) всех адресов электронной почты, на которые вы хотите получать уведомления по электронной почте.ЕслиMAILTO
определено, но пусто (MAILTO = ""
), почта не отправляется.
Ограничения Crontab #
Файлы /etc/cron.deny
и /etc/cron.allow
позволяют контролировать, какие пользователи имеют доступ к команде crontab
. Файлы состоят из списка имен пользователей, по одному имени пользователя в строке.
По умолчанию существует только файл /etc/cron.deny
и он пуст, что означает, что все пользователи могут использовать команду crontab.Если вы хотите запретить доступ к командам crontab определенному пользователю, добавьте имя пользователя в этот файл.
Если файл /etc/cron.allow
существует, только пользователи, перечисленные в этом файле, могут использовать команду crontab
.
Если ни один из файлов не существует, только пользователи с правами администратора могут использовать команду crontab
.
Примеры заданий Cron #
Ниже приведены некоторые примеры заданий cron, которые показывают, как запланировать выполнение задачи в разные периоды времени.
Выполнять команду в 15:00 каждый день с понедельника по пятницу:
0 15 * * 1-5 команда
Запускать сценарий каждые 5 минут и перенаправлять стандартный вывод на
dev null
, на указанный адрес электронной почты будет отправлена только стандартная ошибка:[email protected] * / 5 * * * * /path/to/script.sh> / dev / null
Выполнять две команды каждый понедельник в 15:00 (между командами используйте оператор
&&
):0 15 * * Mon command1 && command2
Запускать PHP-скрипт каждые 2 минуты и записывать результат в файл:
* / 2 * * * * / usr / bin / php / path / to / script.php >> /var/log/script.log
Запускать сценарий каждый день, каждый час, каждый час, с 8:00 до 16:00:
00 08-16 * * * / path / to /script.sh
Запускать сценарий в первый понедельник каждого месяца в 7 часов утра
0 7 1-7 * 1 /path/to/script.sh
Запускать сценарий в 21:15 1 и 15 числа каждого месяца:
15 9 1,15 * * /path/to/script.sh
Установить индивидуальный
HOME
,PATH
,SHELL
иMAILTO
и запускать команду каждую минуту.ДОМ = / opt ПУТЬ = / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin ОБОЛОЧКА = / usr / bin / zsh [email protected] * / 1 * * * * команда
Заключение #
Cron - это демон, который позволяет вам планировать задачи на определенную дату и время.
Не стесняйтесь оставлять комментарии, если у вас есть вопросы.
Настройка базового задания Cron на сервере Linux
Недавно мне пришлось настроить запланированное задание на сервере, что в первый раз немного пугает и пугает, поэтому вот краткая статья о шагах по настройке базовую работу cron.В этой статье мы создадим простой PHP-скрипт для отправки электронной почты один раз в день.
Предварительные требования
- Знакомство с базовой командной строкой.
- Возможность подключения по SSH к серверу Linux.
Голы
- Узнайте, как установить базовую запланированную задачу (задание cron) в среде сервера Linux.
- Установите задание cron для отправки электронной почты каждый день в указанное время.
Отправка электронного письма с PHP
Во-первых, мы можем сделать простой скрипт PHP для тестирования.Я собираюсь сделать файл, который отправит мне простое электронное письмо.
Php
$ to = 'me@example.com';
$ message = 'Это сообщение.';
$ subject = 'Вставить тему здесь';
$ headers = 'От: noreply@example.com'. "\ г \ п".
'Reply-To: me@example.com';
@mail ($ кому, $ тема, $ сообщение, $ заголовки);
?>
Если вы не знакомы с функцией mail ()
в PHP, вот официальная документация. Я устанавливаю переменные для того, кому должно быть отправлено электронное письмо, откуда оно должно исходить, тема, сообщение и заголовки.Это не самый современный или безопасный способ отправки электронной почты, но это работающий сценарий, поэтому я собираюсь использовать его для тестирования. Я просто сохраню это как cron.php .
Путь к вашей общедоступной папке будет зависеть от дистрибутива Linux, но для этого руководства я помещу его в / var / www / html / crontest . Следовательно, полный путь к моему сценарию будет /var/www/html/crontest/cron.php . Вы можете протестировать этот сценарий прямо в браузере, нажав на файл.Если ваш веб-сайт - example.com , скорее всего, это будет example.com/crontest/cron.php . Если вы загрузите файл и получите электронное письмо, значит, сценарий работает.
localhost не настроен для отправки почты PHP, поэтому этот скрипт необходимо запускать из реальной среды Linux.
Базовый синтаксис Cron
Есть полезный сайт под названием Crontab Generator, который рассчитает настройку задания cron для вас, но сначала мы рассмотрим краткий обзор того, как будет выглядеть синтаксис.
Пример задания cron
* * * * * / usr / bin / php /var/www/html/crontest/cron.php> / dev / null 2> & 1
Части команды cron
Команда cron состоит из двух частей - времени и команды для выполнения. В этом примере команда состоит из трех частей:
Сроки | Выполнить | Путь к скрипту | Выход |
---|---|---|---|
* * * * * | / usr / bin / php | / var / www / html / crontest / cron.php | > / dev / null 2> & 1 |
- Время - установите минуты, часы, дни, месяцы и настройки дня недели (подробнее ниже).
- Execute - задание cron должно вызывать PHP для запуска, который находится по адресу
/ usr / bin / php
. - Путь к скрипту - полный путь к файлу, который вы планируете запустить.
- Вывод - (необязательно) вы можете записать вывод в файл или отказаться от него -
> / dev / null 2> & 1
будет отброшен.
В приведенном выше примере задание cron настроено на отправку каждую минуту - или, более конкретно, каждую минуту каждого часа каждого дня каждого месяца, каждого дня недели. Звездочка - это подстановочный знак, обозначающий «все».
- Минуты - установите минуты, от 0-59
- Часы - установить час, от 0-24
- Дни - установить день, с 1-31
- Месяцы - установить месяц, с 1 по 12 (январь - декабрь)
- Неделя - установите день недели, с 0-6 (воскресенье - суббота)
Вот несколько основных примеров, чтобы понять, как это работает.
Синтаксис | Пояснение |
---|---|
0 * * * * | запускается один раз в час (каждый час в нулевую минуту) |
0 0 * * * | запускать один раз в день (каждый день в полночь и на нулевую минуту) |
0 0 1 * * | запускается один раз в месяц (первого числа каждого месяца в полночь и в нулевую минуту) |
0 0 1 1 * | запускается один раз в год (в первый день первого месяца каждого года в полночь и в нулевую минуту) |
Существуют всевозможные настройки, например, для нечетных / четных дней, каждые 5 минут и т. Д., А также множество ресурсов, чтобы найти точное расписание, которое вы ищете.
Настройка задания Cron
Если cron настроен под root, вам необходимо запустить
sudo
перед кодом.
Команда cron известна как crontab
. Мы настроим наше задание cron на рассылку электронной почты один раз в день, поэтому здесь будет полная команда:
0 0 * * * / usr / bin / php /var/www/html/crontest/cron.php> / dev / null 2> & 1
После того, как вы подключитесь к серверу по SSH, вы можете проверить, выполняются ли какие-либо текущие задания, с помощью следующей команды, чтобы вывести список всех crontab
:
crontab: нет crontab для пользователя
Теперь мы отредактируем файл crontab
.
На этом этапе вы, скорее всего, будете в редакторе vi, если вы никогда не меняли редактор по умолчанию для своего сервера. Это может немного сбивать с толку и пугать при первом использовании, поэтому вот что делать:
- нажмите esc.
- нажмите i (для «вставки»), чтобы начать редактирование файла.
- вставьте команду cron в файл.
- снова нажмите esc, чтобы выйти из режима редактирования.
- введите: wq для сохранения (
w
- запись) и выхода (q
- выход) из файла.
Теперь ваш crontab
сохранен, и электронное письмо следует отправлять один раз в день в полночь. Вы можете установить значение * / 5 * * * *
на каждые 5 минут для более быстрого тестирования.
Вы также можете поместить несколько заданий cron в файл, просто поместив каждую команду в отдельную строку, и все они будут запущены.
Заключение
Есть и другие учебные пособия, которые более подробно объясняют работу cron, например, это от Envato Tuts, но это простая статья, чтобы просто познакомиться с концепцией.
Формат строки времени Cron - База знаний службы поддержки Acquia
Запланированные задания в пользовательском интерфейсе Acquia Cloud в каждой среде вашего приложения используйте cron для запуска заданий в определенное время (а) по всемирному координированному времени. Если вам нужно установить настраиваемую строку, полезно иметь формат времени cron.
Формат строки времени Cron состоит из пяти полей, которые Cron преобразует во временной интервал. Затем Cron использует этот интервал, чтобы определить, как часто нужно запускать связанную команду на вашем сайте Drupal.
Например, строка времени Cron 0 10 15 * *
выполняет команду 15 числа каждого месяца в 10:00 утра. УНИВЕРСАЛЬНОЕ ГЛОБАЛЬНОЕ ВРЕМЯ.
Форматирование
Строка времени Cron состоит из пяти значений, разделенных пробелами, на основе следующей информации:
Персонаж | Дескриптор | Допустимые значения |
---|---|---|
1 | Минуты | 0 до 59 или * (без конкретного значения) |
2 | Час | 0 до 23 или * для любого значения.Часовой пояс UTC. |
3 | День месяца | 1 до 31 или * (без конкретного значения) |
4 | Месяц | 1 до 12 или * (без конкретного значения) |
5 | День недели | 0 до 7 (0 и 7 оба представляют воскресенье) или * (без определенного значения) |
Строка времени Cron должна содержать записи для каждого атрибута символа.Если вы хотите установить значение, используя только минуты, у вас должны быть символы звездочки для других четырех атрибутов, которые вы не настраиваете (час, день месяца, месяц и день недели).
Обратите внимание, что ввод значения атрибута символа настраивает выполнение задачи в обычное время. Однако, если вы добавите косую черту (/) и целое число к подстановочному знаку в любой из позиций символа, вы можете настроить задачу cron для запуска с регулярным интервалом, который не зависит от регулярного времени (например, каждые X минут / часов / дней).
Примеры
Используйте следующий пример для создания строк времени Cron, которые вы можете использовать для обслуживания вашего сайта:
Строка времени Cron | Описание |
---|---|
30 * * * * | Выполнять команду через 30 минут каждый час. |
0 13 * * 1 | Выполнить команду в 13:00. UTC каждый понедельник. |
* / 5 * * * * | Выполнять команду каждые пять минут. |
0 * / 2 * * * | Выполнять команду каждый второй час в час. |
crontab (5) - страница руководства Linux
crontab (5) - страница руководства Linux
CRONTAB (5) Форматы файлов CRONTAB (5)
НАЗВАНИЕ верхнее
crontab - файлы, используемые для расписания выполнения программ
ОПИСАНИЕ вверху
Файл crontab содержит инструкции для демона cron (8) в следующим упрощенным способом: "запустите эту команду в это время в этот день ».Каждый пользователь может определить свой собственный crontab. Команды определенные в любом заданном crontab, выполняются под пользователем, которому принадлежит этот конкретный crontab. Uucp и News обычно имеют свои собственные crontabs, избавляя от необходимости явно запускать su (1) как часть команды cron. Пустые строки, ведущие пробелы и табуляторы игнорируются. Линии, чьи первый непробельный символ - это знак решетки (#) - это комментарии, и не обрабатываются. Обратите внимание, что комментарии к та же строка, что и команды cron, так как они считаются частью команда.Точно так же нельзя оставлять комментарии к одному и тому же строку как настройки переменной среды. Активная строка в crontab - это либо параметр среды, либо параметр cron команда. Настройка среды имеет вид: имя = значение где пробелы вокруг знака равенства (=) необязательны, и любые последующие не ведущие пробелы в значении являются частью значение, присвоенное имени . Строка value может быть помещена в кавычки (одинарные или двойные, но совпадающие) для сохранения ведущих или конечные пробелы.Некоторые переменные среды настраиваются автоматически cron (8) демон. SHELL установлен в / bin / sh, а LOGNAME и HOME устанавливаются из строки / etc / passwd владельца crontab. ДОМ и SHELL можно переопределить настройками в crontab; LOGNAME не можешь. (Примечание: переменная LOGNAME иногда называется USER в BSD систем и также устанавливается автоматически).В дополнение к LOGNAME , HOME и SHELL , cron (8) смотрит на MAILTO переменная, если письмо необходимо отправить в результате выполнения любые команды в этом конкретном файле crontab. Если определено MAILTO (и непустое), почта отправляется на указанный адрес. Если MAILTO определено, но пусто ( MAILTO = "" ), почта не отправляется. В противном случае письмо будет отправлено владельцу crontab.Этот вариант полезно, если вы решите использовать / bin / mail вместо / usr / lib / sendmail в качестве почтовой программы. Обратите внимание, что / bin / mail не предоставляют псевдонимы, и UUCP обычно не читает свою почту. Если MAILFROM определен (и непустой), используется как конверт адрес отправителя, в противном случае используется `` корень ''. (Примечание: переменные MAILFROM и MAILTO раскрываются, поэтому установка их, как в следующем примере, работает должным образом: MAILFROM = cron- $ USER @ cron.com ($ USER заменяется системой Пользователь) ) По умолчанию cron отправляет письмо, используя заголовок Content-Type: 'text / plain' с параметром 'charset =', установленным на 'charmap / codeset' локали, в которой запущен crond (8), т.е. либо локаль системы по умолчанию, если нет среды LC_ * заданы переменные, или локаль, указанная в LC_ * переменные среды (см. locale (7)). Другой характер кодировки могут использоваться для рассылки выходных данных заданий cron путем установки параметра CONTENT_TYPE и CONTENT_TRANSFER_ENCODING переменных в crontab к правильным значениям почтовых заголовков этих имен.Переменная CRON_TZ указывает часовой пояс, специфичный для таблица cron. Пользователь должен ввести время в соответствии с указанный часовой пояс в таблицу. Время, потраченное на письмо в файл журнала берется из местного часового пояса, где демон запущен. Переменная среды MLS_LEVEL обеспечивает поддержку нескольких контексты безопасности SELinux для каждого задания в том же crontab. К по умолчанию задания cron выполняются с безопасностью SELinux по умолчанию контекст пользователя, создавшего файл crontab.Когда используешь несколько уровней безопасности и ролей, этого может быть недостаточно, потому что один и тот же пользователь может работать в разных ролях или в разные уровни безопасности. Для получения дополнительной информации о ролях и SELinux MLS / MCS, см. Selinux (8) и упомянутый пример crontab далее в этом тексте. Вы можете установить для переменной MLS_LEVEL значение Строка контекста безопасности SELinux, определяющая конкретный SELinux контекст безопасности, в котором вы хотите запускать задания. crond будет затем установите контекст выполнения тех заданий, которые соответствуют спецификации конкретного контекста безопасности. Для большего информацию, см. параметр crontab (1) -s. Переменная RANDOM_DELAY позволяет задерживать запуск заданий случайным образом. количество минут с верхним пределом, заданным переменной. В случайный коэффициент масштабирования определяется во время демона cron запуск, поэтому он остается постоянным в течение всего времени работы демон.Формат команды cron аналогичен стандарту V7 с ряд расширений с обратной совместимостью. В каждой строке по пять поля времени и даты, за которыми следует имя пользователя (если это system crontab файл), а затем следует команду. Команды выполняется cron (8), когда 'минута', 'час' и 'месяц год 'соответствует текущему времени, и - по крайней мере одно из двух поля "день" ("день месяца" или "день недели") соответствуют текущему время (см. «Примечание» ниже).Обратите внимание, что это означает, что несуществующие времена, такие как "недостающие часы" во время перехода на летнее время, будет никогда не совпадают, в результате чего задания запланированы на "пропущенное время" не запускаться. Точно так же времена, которые встречаются более одного раза (опять же, при переходе на летнее время) вызовет соответствующие задания должны выполняться дважды. cron (8) проверяет записи cron каждую минуту. Поля времени и даты: допустимые значения поля ----- -------------- минута 0-59 час 0-23 день месяца 1-31 месяц 1-12 (или названия, см. ниже) день недели 0-7 (0 или 7 - воскресенье, или используйте названия) Поле может содержать звездочку (*), которая всегда означает "первый Последний".Допускаются диапазоны чисел. Диапазоны разделены двумя числами с дефисом. Указанный диапазон является включительным. Например, 8-11 для записи "часы" означает выполнение в часы 8, 9, 10, и 11. Первое число должно быть меньше или равно второму. один. Списки разрешены. Список - это набор чисел (или диапазонов) разделенных запятыми. Примеры: «1,2,5,9», «0-4,8-12». Значения шагов можно использовать вместе с диапазонами. После диапазон с "/ <число>" указывает пропуск значения числа через ассортимент.Например, "0–23 / 2" можно использовать в поле 'часы', чтобы указать выполнение команды через каждый второй час (альтернатива в стандарте V7: «0,2,4,6,8,10,12,14,16,18, 20,22 "). Значения шага также разрешены после звездочки, поэтому если указав задание, которое будет запускаться каждые два часа, вы можете использовать «* / 2». Имена также можно использовать для полей «месяц» и «день недели». Используйте первые три буквы определенного дня или месяца (регистр Не важно). Допускаются диапазоны и списки имен.Примеры: «пн, ср, пт», «ян-мар». Если UID владельца равен 0 (корень), первый символ Запись crontab может быть символом «-». Это предотвратит запуск cron запись сообщения системного журнала о выполняемой команде. «Шестое» поле (остальная часть строки) определяет команду для быть запущенным. Вся командная часть строки до новой строки или символ "%", будет выполняться / bin / sh или оболочкой указывается в переменной SHELL файла cron.Характер в команде, если он не экранирован обратной косой чертой (\), будет заменены на символы новой строки, а все данные после первого% будет отправлено команде как стандартный ввод. Примечание: день выполнения команды можно указать в следующие два поля - «день месяца» и «день недели». Если оба поля ограничены (т. е. не содержат "*" символ), команда будет запущена, когда либо поле совпадет с Текущее время.Например, «30 4 1,15 * 5» вызовет выполнение команды в 4:30 утра на 1 и 15 числа каждого месяца, а также каждую пятницу. Синтаксис файла crontab можно проверить перед установкой с помощью -T вариант. См. Crontab (1) для подробностей.
ПРИМЕР CRON FILE вверху
# используйте / bin / sh для запуска команд, независимо от того, что говорит / etc / passwd ОБОЛОЧКА = / bin / sh # отправляем любой вывод в `paul ', независимо от того, чей это crontab MAILTO = пол # CRON_TZ = Япония # бегать через пять минут после полуночи каждый день 5 0 * * * $ HOME / bin / daily.работа >> $ HOME / tmp / out 2> & 1 # запускать в 14:15 первого числа каждого месяца - выходные данные отправляются Полу 15 14 1 * * $ HOME / бункер / ежемесячно # бегать в 22:00 по будням, раздражать Джо 0 22 * * 1-5 mail -s "It's 10pm" joe% Joe, %% Где ваши дети?% 23 0–23 / 2 * * * эхо «бегать через 23 минуты после полудня, в 2 часа ночи, в 4 часа ночи ... каждый день» 5 4 * * sun echo "запускать в 5 часов после 4 каждое воскресенье"
Вакансий в /etc/cron.d/ top
Задания в крон.d и / etc / crontab - системные задания, которые обычно используется более чем одним пользователем, таким образом, дополнительно имя пользователя не требуется. MAILTO в первой строке не является обязательным.
ПРИМЕР ЗАДАНИЯ В /etc/cron.d/job top
# войти как root # создать задание с предпочтительным редактором (например, vim) MAILTO = корень * * * * * root touch / tmp / file
SELinux с многоуровневой безопасностью (MLS) top
В crontab важно указать уровень безопасности с помощью crontab -s или указав необходимый уровень в первой строке кронтаб.Каждый уровень указан в / etc / selinux / target / seusers . При использовании crontab в MLS режиме особенно важно: - проверить / изменить фактическую роль, - установить правильную роль для каталога , который используется для ввода / вывода.
ПРИМЕР ДЛЯ SELINUX MLS top
# войти как root newrole -r sysadm_r mkdir / tmp / SystemHigh chcon -l SystemHigh / tmp / SystemHigh crontab -e # записываем в файл crontab MLS_LEVEL = SystemHigh 0-59 * * * * id -Z> / tmp / SystemHigh / crontest
ФАЙЛОВ вверху
/ etc / crontab основной системный файл crontab. / var / spool / cron / а каталог для хранения crontab, определенных пользователями. /etc/cron.d/ a каталог для хранения системных crontab.
СМОТРИ ТАКЖЕ top
cron (8), crontab (1)
РАСШИРЕНИЯ верхняя
Эти специальные "псевдонимы" с указанием времени, которые заменяют 5 начальные поля времени и даты и имеют префикс '@' характер, поддерживаются: @reboot: запустить один раз после перезагрузки.@yearly: запускать один раз в год, т.е. «0 0 1 1 *». @annually: запускать один раз в год, т.е. «0 0 1 1 *». @monthly: запускать раз в месяц, т.е. «0 0 1 * *». @weekly: запускать раз в неделю, т.е. «0 0 * * 0». @daily: запускать один раз в день, т.е. «0 0 * * *». @hourly: запускать раз в час, т.е. «0 * * * *».
ПЕЩЕРА верхняя
crontab файлы должны быть обычными файлами или символическими ссылками на обычные файлы. файлы, они не должны быть исполняемыми или доступными для записи для кого-либо еще но хозяин.Это требование может быть отменено с помощью -p в командной строке crond. Если поддержка inotify находится в использование, изменения в crontab с символической ссылкой не производятся автоматически заметил демон cron. Демон cron должен получить Сигнал SIGHUP для перезагрузки crontab. Это ограничение API inotify. cron требует, чтобы каждая запись в crontab заканчивалась новой строкой характер. Если в последней записи crontab отсутствует новая строка (я.е. завершено EOF), cron будет рассматривать crontab (в хотя бы частично) сломан. Предупреждение будет записано в системный журнал.
АВТОР верх
Пол Викси ⟨[email protected]⟩
COLOPHON верх
Эта страница является частью проекта cronie (crond daemon). Информацию о проекте можно найти на сайте ⟨Https: //github.com/cronie-crond/cronie. Если у вас есть ошибка отчет для этой страницы руководства, см. ⟨Https: // github.com / cronie-crond / cronie / issues⟩. Эта страница была получено из исходного репозитория Git проекта ⟨Https: //github.com/cronie-crond/cronie.git⟩ 18 декабря 2020 г. (В в это время дата последнего коммита, обнаруженного в репозиторий был 2020-11-02.) Если вы обнаружите какой-либо рендеринг проблемы в этой HTML-версии страницы, или вы верите является лучшим или более актуальным источником для страницы, или у вас есть исправления или улучшения информации в этом COLOPHON (это , а не часть исходной страницы руководства), отправьте письмо по адресу man-страницы @ man7.org
Страницы, которые относятся к этой странице:
cronnext (1),
crontab (1),
pmfind_check (1),
pmie_check (1),
pmlogger_check (1),
cron (8)
Linux Crontab Справочное руководство - LinuxConfig.org
Введение
Каждому пользователю, а также администратору системы Linux очень часто необходимо автоматически запускать некоторые программы на регулярной основе.
Например, администратору может потребоваться отслеживать использование диска в системе.В этом случае планировщик cron - очень удобный инструмент для достижения этой цели.
Допустим, системному администратору необходимо выполнять сценарий /usr/local/sbin/backup.sh
каждые воскресенье
в 2:36 утра
. В этом случае администратор отредактирует свой файл crontab
, как показано на рисунке ниже:
$ sudo crontab -e
Формат записи Crontab прост, поскольку он разделен на 7 полей, разделенных пробелами или табуляциями. Шестое поле, в данном случае имя пользователя, можно не указывать, поскольку оно используется только общесистемным планировщиком crontab.
На следующем рисунке показана одна запись Crontab, позволяющая автоматически запускать скрипт каждые воскресенье
в 2:36 утра
:
Пример формата и синтаксиса записи Crontab
ПОДПИСАТЬСЯ НА НОВОСТИ И RSS
Подпишитесь на RSS и получайте новости последние новости Linux, вакансии, советы по карьере и учебные пособия.
Приведенный выше пример не требует пояснений. Что может быть не столь очевидным, так это использование знака *
в приведенном выше примере записи crontab.Символ *
- это подстановочный знак, буквально переводящийся как всегда.
Ниже вы можете найти некоторые другие базовые примеры crontab:
Crontab Entry | Описание |
---|---|
* / 5 * * * * | Запускать задание Crontab каждые 5 минут |
0 * * * | Выполнять задание Crontab каждый час |
0 0 * * * | Выполнять задание crontab каждый день в 00:00 часов |
Как редактировать задачи Crontab Scheduler
Пользователь может редактировать свои задания crontab при входе следующая команда crontab
:
$ crontab -u foobar -e
Приведенная выше команда откроет ваш личный файл конфигурации crontab с помощью текстового редактора по умолчанию.Просто внесите изменения и сохраните файл. Нет необходимости перезапускать crontab, поскольку он автоматически сохранит ваши изменения. Чтобы вывести список задач crontab, введите:
$ crontab -l
Наконец, если вам нужно удалить задачи crontab, выполните следующую команду. Обратите внимание, что при этом будут удалены все записи crontab:
$ crontab -r
Общесистемный планировщик crontab
Многие службы автоматически используют crontab. Они хранят свою конфигурацию планировщика crontab непосредственно в файле / etc / cron.d
справочник. Все файлы, расположенные в этом каталоге, автоматически выбираются и запускаются планировщиком crontab. Системные администраторы
Linux также могут воспользоваться преимуществами предварительно сконфигурированных каталогов crontab /etc/cron.daily
, /etc/cron.hourly
, /etc/cron.monthly
и /etc/cron.weekly
.
Файлы crontab, расположенные в этих каталогах, периодически просматриваются и выполняются планировщиком crontab. Так, например, файлы crontab находятся в каталоге / etc / cron.ежедневно
справочник выполняются каждый день. Кроме того, если root хочет запустить, например. Скрипт backup.sh
раз в неделю он будет помещать его в каталог /etc/cron.weekly
.
Дополнительные примеры Crontab
Пример 1 Crontab
Пример Crontab для запуска команды updatedb
через 35 минут каждый час.
35 * * * * updatedb
Пример Crontab 2
Пример Crontab для выполнения /usr/local/bin/diskusage.sh
в 14:00 10 марта, июня, сентября и декабря.
00 14 10 3,6,9,12 * /usr/local/bin/diskusage.sh
Пример Crontab 3
Этот пример crontab запускает /usr/local/bin/diskusage.sh
в 1:25 AM, 1:50 утра каждый вторник и 15 числа каждого месяца.
25,50 1 15 * 2 /usr/local/bin/diskusage.sh
Пример Crontab 4
Этот пример crontab запускает /usr/local/bin/diskusage.sh
в 21:00 каждый понедельник, среду, пятницу.