В этом руководстве мы познакомим вас со всем, что вам нужно знать для планирования работы с помощью cron. Это включает в себя базовый синтаксис cron, редактирование файла crontab, планирование задания с помощью cron с несколькими примерами, просмотр задания cron и т. Д.
Основы работы Cron
Давайте разберемся с основами работы cron.
Что такое Кронд?
Crond - это демон в системе Linux, который работает в фоновом режиме и каждую минуту проверяет, не запланировано ли на это время какое-либо задание. Если есть, он выполняет эту работу, в противном случае он остается неактивным.
Синтаксис работы Cron
Синтаксис задания cron следующий:
* * * * *команда/сценарий
Слева:
- Первый * соответствует минутам (0-59).
- Второй * соответствует часам (0-23).
- Третья * соответствует Дню месяца (1-31)
- Четвертый * соответствует месяцу года (1-12).
- Пятый * соответствует Дню недели (0-6, с воскресенья по субботу)
Чтобы указать несколько значений в поле, используйте следующие символы операторов:
- Звездочка (*): Чтобы указать все возможные значения для поля
- Бросаться (-): К s определить диапазон значений
- Запятая (,): Чтобы указать список значений
- Разделитель (/): Чтобы указать значение шага
Редактирование файла Crontab
Crontab - это файл, содержащий запланированные задания с определенным синтаксисом. Есть два типа файлов crontab; один для заданий cron, специфичных для системы, а другой - для заданий cron, специфичных для пользователя.
Системные задания cron
Общесистемные задания cron расположены в / etc / crontab файл и /etc/cron.d каталог, и они проходят через /etc/cron.hourly , /etc/cron.daily , /etc/cron.weekly а также /etc/cron.monthly. Только системный администратор может получить доступ к этим файлам.
Системный администратор может определить задание cron с помощью следующей команды:
$нано /так далее/crontabВот синтаксис задания в / etc / crontab файл:
# min hr dayofmonth month dayofweek имя пользователя команда* * * * *user1ifconfig
Пользовательские задания cron
Пользовательские задания cron расположены в папке / вар / катушка / cron / crontabs каталог. Хотя вы можете редактировать эти задания вручную, рекомендуется редактировать эти задания с помощью команды crontab -e.
Стандартный пользователь может определить задание cron с помощью следующей команды:
$crontab-А такжеНапример, если вы вошли в систему как тестовый пользователь, запуск команды crontab -e отредактирует файл crontab для тестового пользователя. Точно так же, если вы вошли в систему как пользователь root, команда crontab -e отредактирует файл crontab для пользователя root.
Выполните следующую команду в Терминале, чтобы отредактировать файл crontab для любого другого пользователя:
$судоcrontab-u <имя пользователя> -А такжеНапример, если вы вошли в систему как пользователь test1 и хотите отредактировать файл crontab для пользователя test2, команда будет выглядеть так:
$судоcrontab-utest2-А такжеВот синтаксис задания cron, которое можно добавить в файл crontab:
# m h dayofmonth month команда dayofweek* * * * * ifconfig
В пользовательских заданиях вы можете видеть, что имя пользователя не указано.
Команды Crontab
Команда crontab используется для редактирования, перечисления и удаления заданий cron:
- crontab -e Чтобы отредактировать файл crontab текущего пользователя
- crontab -l Чтобы отобразить содержимое файла crontab
- crontab -u [имя пользователя] Чтобы отредактировать файл crontab любого другого пользователя
- crontab -r Чтобы удалить файл crontab текущего пользователя
- crontab -i Чтобы отобразить запрос перед удалением файла crontab текущего пользователя
Планирование работы с помощью Cron
С помощью Cron вы можете запускать задание в определенное время, дату и интервалы с минимальной единицей измерения в минутах, то есть вы можете запускать задание каждую минуту.
Чтобы запланировать задание с помощью cron, откройте файл crontab, используя метод, описанный в предыдущем разделе. Как только вы откроете файл crontab, вам будет предложено выбрать текстовый редактор. Введите число, чтобы выбрать предпочитаемый текстовый редактор. Прокрутите вниз до конца файла и добавьте задания, используя синтаксис, описанный выше. Каждая строка в файле определяет одну команду. Первые пять записей в строке указывают запланированное время, а последняя запись указывает, какую команду или сценарий следует запустить.
Пример:
Следующая строка в файле crontab будет планировать задание cron для запуска команды / сценария каждые 30 минут за последние 5 часов каждый день недели с понедельника по субботу.
* /30 5 * * 1-6команда/сценарий
Минуты
В этом поле мы указываем минуты, когда мы хотим, чтобы команда была выполнена. Указывается от 0 до 59. * в этом поле означает запускать задание каждую минуту. В приведенной выше строке crontab * / 30 указывает заданию cron запускать указанную команду / сценарий каждые 30 минут.
Часы
В этом поле мы указываем часы, когда мы хотим, чтобы команда была выполнена. Он задается от 0 до 23. Значок * в этом поле означает запуск задания каждый час. В приведенной выше строке crontab значение 5 указывает заданию cron запускать указанную команду / сценарий каждые пять часов.
День месяца
В этом поле мы указываем конкретные дни месяцев, когда мы хотим, чтобы команда выполнялась. Указывается от 1 до 31. * в этом поле означает каждый день. В приведенной выше строке crontab * указывает заданию cron запускать указанную команду / скрипт каждый день.
Месяц в году
В этом поле мы указываем конкретные месяцы, когда мы хотим, чтобы команда была выполнена. Указывается от 1 до 12. Знак * в этом поле означает каждый месяц. В приведенной выше строке crontab * указывает заданию cron запускать указанную команду / сценарий каждый месяц.
День недели
В этом поле мы указываем конкретные дни недели, когда мы хотим, чтобы команда выполнялась. Указывается от 0 до 6 с воскресенья по субботу (0 для воскресенья и 6 для субботы). * В этом поле означает каждый день недели. В приведенной выше строке crontab * указывает заданию cron запускать указанную команду / скрипт каждый день в неделю.
Примеры заданий Cron
Вот несколько примеров заданий cron:
Запускать cron каждые 15 минут
Чтобы запланировать запуск задания cron каждые 15 минут, добавьте следующую строку в файл crontab:
* /пятнадцать * * * *команда/сценарийЗапускать cron-задание в 5 утра каждый день
Чтобы запланировать запуск задания cron в 5 утра каждый день, добавьте следующую строку в файл crontab:
0 5 * * *команда/сценарийЗапускать cron-задание в 17:00 каждый день
Чтобы запланировать запуск задания cron в 17:00 каждый день, добавьте следующую строку в файл crontab:
0 17 * * *команда/сценарийЗапускать cron-задание в 9 утра первого числа каждого месяца.
Чтобы запланировать запуск задания cron в 9 утра первого числа каждого месяца, добавьте следующую строку в файл crontab:
0 9 1 * *команда/сценарийЗапускать cron-задание каждый час 15 марта.
Чтобы запланировать задание cron каждый час 15 марта, добавьте следующую строку в файл crontab:
0 * пятнадцать 3 *команда/сценарийЗапускать cron каждые 5 часов
Чтобы запланировать задание cron каждые 5 часов, добавьте следующую строку в файл crontab:
0 * /5 * * *команда/сценарийЗапускать cron каждые 15 минут
Чтобы запланировать запуск задания cron каждые 15 минут, добавьте следующую строку в файл crontab:
* /пятнадцать * * * *Использование строк
Следующие строки также могут использоваться для определения задания:
- @ почасово: Выполнять задание один раз в час, т.е. 0 * * * *
- @полночь: Выполнять задание один раз в день, т.е. 0 0 * * *
- @ежедневно: как в полночь
- @ еженедельно: Выполнять задание раз в неделю, т.е. 0 0 * * 0
- @monthly: Выполнять задание один раз в месяц, т.е. 0 0 1 * *
- @ ежегодно: Выполнять задание один раз в год, т.е. 0 0 1 1 *
- @ год: так же, как @annually
- @перезагружать: Выполнять задание один раз при каждом запуске
Например, для запуска сценария или команды каждую неделю запись в файле crontab будет следующей:
@еженедельная команда/сценарийПредопределенные каталоги Cron
В Linux есть несколько предопределенных каталогов cron, в которых автоматически выполняются сохраненные сценарии. Если мы поместим какой-либо сценарий в эти каталоги, он будет автоматически выполнен в указанное время.
- /etc/cron.daily
- /etc/cron.hourly
- /etc/cron.monthly
- /etc/cron.weekly
Например, чтобы запускать сценарий один раз в месяц, вам нужно поместить его в /etc/cron.monthly.
Просмотр вакансий Cron
Просмотр вакансий для текущего пользователя
Используйте следующую команду, чтобы просмотреть все запланированные задания cron для текущего пользователя:
$crontab-Просмотр вакансий для пользователей root
Чтобы просмотреть все запланированные задания пользователя root, введите в Терминале следующую команду:
$Кот /так далее/crontabВам нужно будет войти в систему как пользователь root или выполнить команду как sudo.
Просмотр вакансий для других пользователей
Чтобы просмотреть все запланированные задания конкретного пользователя, введите в Терминале следующую команду, заменив фактическое имя пользователя:
$судоcrontab-u <имя пользователя> -Для запуска этой команды вам потребуются привилегии sudo.
Просмотр почасовых заданий cron
Чтобы просмотреть все задания cron, которые настроены на ежечасный запуск, введите в Терминале следующую команду:
$ls - /так далее/cron.hourlyПросмотр ежедневных заданий cron
Чтобы просмотреть все задания cron, которые настроены на ежедневное выполнение, введите в Терминале следующую команду:
$ls - /так далее/cron.daily/Просмотр еженедельных заданий cron
Чтобы просмотреть все задания cron, которые настроены на еженедельное выполнение, введите в Терминале следующую команду:
$ls - /так далее/cron.weekly/Просмотр ежемесячных заданий cron
Чтобы просмотреть все задания cron, которые настроены на ежемесячный запуск, введите в Терминале следующую команду:
$ls - /так далее/cron.monthly/Резервное копирование всех заданий Cron
Рекомендуется хранить резервную копию всех заданий cron в файле, чтобы вы могли восстановить их в случае удаления. Чтобы сделать резервную копию всех текущих заданий, используйте оператор перенаправления, чтобы перенаправить вывод crontab -l в файл.
$crontab- >backup_cron.txtУдаление всех запланированных заданий Cron
Чтобы удалить все запланированные задания cron, используйте флаг -r следующим образом:
$crontab-рРазрешение Cron
Мы можем ограничить доступ к команде crontab через два файла: / и т.д. / cron.allow и / etc / cron.deny.
- /etc/cron.allow - Добавьте пользователей (по одному в каждой строке), которым вы хотите разрешить доступ к командам crontab. Эти пользователи могут запускать задания по расписанию.
- /etc/cron.deny - Добавьте пользователей (по одному в каждой строке), которым вы хотите запретить доступ к командам crontab. Эти пользователи не могут запускать запланированные задания.
Генераторы синтаксиса Crontab
Есть несколько веб-сайтов, которые позволяют генерировать синтаксис для crontab. Эти веб-сайты упрощают создание выражения crontab без запоминания синтаксиса. Хотя существуют различные веб-сайты для генераторов синтаксиса, такие как crontabgenerator.com , crontab-generator.org , а также cronmaker.com . Тот, который я больше всего предпочитаю и считаю полезным, - это crontab.guru . На основе пользовательского ввода он генерирует выражение crontab, которое вы можете скопировать и вставить в файл crontab.
Заключение
В этом руководстве мы объяснили основы заданий cron, их синтаксис и способы его настройки. Мы также обсудили, как просматривать задания cron, создавать резервные копии и удалять их, если они больше не нужны.