- 11 Cron Scheduling Task Examples in Linux
- 1. List Crontab Entries
- 2. Edit Crontab Entries
- 3. List Scheduled Cron Jobs
- 4. Remove Crontab Entry
- 5. Prompt Before Deleting Crontab
- 6. Allowed special character (*, -, /, ?, #)
- 7. System Wide Cron Schedule
- 8. Schedule a Jobs for Specific Time
- 9. Special Strings for Common Schedule
- 10. Multiple Commands with Double amper-sand(&&)
- 11. Disable Email Notification.
- If You Appreciate What We Do Here On TecMint, You Should Consider:
- Настройка планировщика задач Cron в CentOS Linux
- Установка cron в Linux
- Crontab: добавление задания в планировщик cron
- Отправка уведомлений cron на e-mail
- Файлы конфигурации и логи планировщика cron
- Как добавить команду в Cron
- Как посмотреть задания cron
- Добавление команды в cron
- Выводы
11 Cron Scheduling Task Examples in Linux
In this article we are going to review and see how we can schedule and run tasks in the background automatically at regular intervals using Crontab command. Dealing a frequent job manually is a daunting task for system administrator. Such process can be schedule and run automatically in the background without human intervene using cron daemon in Linux or Unix-like operating system.
For instance, you can automate process like backup, schedule updates and synchronization of files and many more. Cron is a daemon to run schedule tasks. Cron wakes up every minute and checks schedule tasks in crontable. Crontab (CRON TABle) is a table where we can schedule such kind of repeated tasks.
Tips: Each user can have their own crontab to create, modify and delete tasks. By default cron is enable to users, however we can restrict adding entry in /etc/cron.deny file.
11 Cron Command Examples in Linux
Crontab file consists of command per line and have six fields actually and separated either of space or tab. The beginning five fields represent time to run tasks and last field is for command.
- Minute (hold values between 0-59)
- Hour (hold values between 0-23)
- Day of Month (hold values between 1-31)
- Month of the year (hold values between 1-12 or Jan-Dec, you can use first three letters of each month’s name i.e Jan or Jun.)
- Day of week (hold values between 0-6 or Sun-Sat, Here also you can use first three letters of each day’s name i.e Sun or Wed. )
- Command
1. List Crontab Entries
List or manage the task with crontab command with -l option for current user.
2. Edit Crontab Entries
To edit crontab entry, use -e option as shown below. In the below example will open schedule jobs in VI editor. Make a necessary changes and quit pressing :wq keys which saves the setting automatically.
3. List Scheduled Cron Jobs
To list scheduled jobs of a particular user called tecmint using option as -u (User) and -l (List).
Note: Only root user have complete privileges to see other users crontab entry. Normal user can’t view it others.
4. Remove Crontab Entry
Caution: Crontab with -r parameter will remove complete scheduled jobs without confirmation from crontab. Use -i option before deleting user’s crontab.
5. Prompt Before Deleting Crontab
crontab with -i option will prompt you confirmation from user before deleting user’s crontab.
6. Allowed special character (*, -, /, ?, #)
- Asterik(*) – Match all values in the field or any possible value.
- Hyphen(-) – To define range.
- Slash (/) – 1st field /10 meaning every ten minute or increment of range.
- Comma (,) – To separate items.
7. System Wide Cron Schedule
System administrator can use predefine cron directory as shown below.
- /etc/cron.d
- /etc/cron.daily
- /etc/cron.hourly
- /etc/cron.monthly
- /etc/cron.weekly
8. Schedule a Jobs for Specific Time
The below jobs delete empty files and directory from /tmp at 12:30 am daily. You need to mention user name to perform crontab command. In below example root user is performing cron job.
9. Special Strings for Common Schedule
Strings | Meanings |
---|---|
@reboot | Command will run when the system reboot. |
@daily | Once per day or may use @midnight. |
@weekly | Once per week. |
@yearly | Once per year. we can use @annually keyword also. |
Need to replace five fields of cron command with keyword if you want to use the same.
10. Multiple Commands with Double amper-sand(&&)
In below example command1 and command2 run daily.
11. Disable Email Notification.
By default cron send mail to user account executing cronjob. If you want to disable it add your cron job similar to below example. Using >/dev/null 2>&1 option at the end of the file will redirect all the output of the cron results under /dev/null.
conclusion: Automation of tasks may help us to perform our task better ways, error free and efficiently. You may refer manual page of crontab for more information typing ‘man crontab‘ command in your terminal.
If You Appreciate What We Do Here On TecMint, You Should Consider:
TecMint is the fastest growing and most trusted community site for any kind of Linux Articles, Guides and Books on the web. Millions of people visit TecMint! to search or browse the thousands of published articles available FREELY to all.
If you like what you are reading, please consider buying us a coffee ( or 2 ) as a token of appreciation.
We are thankful for your never ending support.
Источник
Настройка планировщика задач Cron в CentOS Linux
Cron — это планировщик задач, работающий в Unix-подобных операционных системах, включая все дистрибутивы Linux. Демон cron работает на сервере в фоновом режиме и запускает по расписанию запланированные задачи. В этой статье мы рассмотрим установку cron на сервер с Linux CentOS 8, познакомимся с синтаксисом cron, научимся добавлять в него различные задачи, управлять расписанием запуска.
Установка cron в Linux
По умолчанию cron доступен при установке CentOS 8. Если же у вас по каким-то причинам он отсутствует, вы можете установить его из базового репозитория с помощью yum / dnf:
# dnf update -y — обновить все ПО на сервере
# dnf install crontabs -y — установите cron
В моем случае cron уже был установлен:
После установки, демон crond нужно добавить в автозагрузку и запустить:
# systemctl enable crond.service
# systemctl start crond.service
Crontab: добавление задания в планировщик cron
Для добавления задач в cron можно использовать команду:
Данная команда откроет файл для задач для вашего пользователя в текстовом редакторе по-умолчанию (у меня это vi, но можно изменить на удобный для вас, например nano). Настройка заданий таким способом исключает, что вы допустите ошибку в синтаксисе. Редактор crontab просто не даст сохранить файл с ошибками.
Также можно отредактировать файл заданий cron вручную через mc:
# mcedit /var/spool/cron/root – имя файла может отличаться, в зависимости от того, под каким пользователем вы работаете.
Чтобы добавить простое задание по запуск bash скрипта в cron, выполните:
Теперь добавьте расписание задания и путь к файлу скрипта:
Сохраните файл (редактирование файла по аналогии с редактором vim: сохранить Ctrl+O и выйти Ctrl+x).
Если все сделали верно, ваше задание будет добавлено. Чтобы вывести список заданий cron, выполните:
Данный скрипт будет запускаться через cron ежеминутно.
Каждая запись расписания crontab состоит из 5 полей:
Можно использовать следующие допустимые значения для каждого из полей:
Поле | Диапазон значений |
минуты | 0-59 |
часы | 0-23 |
день месяца | 1-31 |
месяц | 1-12 или jan feb mar apr may jun jul aug sep oct nov dec |
день недели | 0-6 (где 0 это воскресение) или sun mon tue wed thu fri sat |
Знак * означает все допустимые значения. Пример задания:
Указанный в задании скрипт, будет запускаться каждый понедельник в 00 часов 15 минут. Для упрощения синтаксиса cron-файла используют специальные символы:
Запятая (,) : запятой разбиваются значения расписания для выполнения одинаковой задачи, но в разное время. Например, если вам нужно выполнять задачу в 15 и 30 минут, вы можете задать расписание так:
Или исползовать более короткий синтаксис с запятой:
Слеш (/) : использовать косую черту можно для выражения какого-либо шага. Например, вам нужно запускать какую-то задачу каждые 2 часа. В обычном написании файл cron будет громоздким, используя / вы заметно сократите содержимое cron файл:
* */2 * * *
Дефис (-) : дефис указывает диапазон значений в поле. Если вы хотите запускать задание первые 10 минут или последние 10 минут, укажите диапазон через дефис:
Еще несколько примеров расписаний для cron:
- запуск по будням в 12:00 и 18:00: 0 12,18 * * 1-5
- каждые 30 минут: */30 * * * *
- каждую субботу: 0 0 * * 6
- каждый вторник и четверг в 2:00 ночи: 0 2 * * 2,4
Еще в cron можно использовать специальные переменные.
Переменная | Описание | Эквивалент |
@reboot | Запускается один раз при загрузке | |
@yearly | один раз в год | 0 0 1 1 * |
@monthly | один раз в месяц | 0 0 1 * * |
@weekly | один раз в неделю | 0 0 * * 0 |
@daily | один раз в день | 0 0 * * * |
@hourly | ежечасно | 0 * * * * |
@midnight | В полночь |
Т.е. для запуска задания раз в день можно использовать формат:
@daily echo «Проверка cron»
Можно отредактировать cron файл другого пользователя:
# crontab -u username
Отправка уведомлений cron на e-mail
Если вы хотите получать информацию о выполнении ваших задач cron по почте, нужно выполнить настройку cron-файла с задачами.
# dnf install sendmail -y
# service sendmail start
sendmail – бесплатный агент для передачи почты, который доступен практически для любой операционной системе.
Настроем параметры отправки e-mail в cron-файле. Добавьте в файл следующие строки:
MAILTO — укажите свой почтовый ящик
SHELL — оболочка пользователя
HOME — путь к файлу cron
После каждого запуска задачи на указанный email отправляется уведомление:
Информацию о запуске задания cron можно сохранять в лог-файл. Для этого, в конце задания нужно добавить >> и указать путь до лог-файла:
* * * * * echo «Проверка cron» >> /var/log/admin/journal.log
Если в вашем cron-файле добавлено много заданий и результат выполнения каких-то из них, не нужно отправлять на почту, данные задания вы можете запускать в «бесшумном» режиме:
* * * * * echo «Проверка cron» >> /dev/null 2>&1
Таким образом вы можете отделить некоторые задания, чтобы не отправлять уведомления о всех задания себе на почтовый ящик.
Файлы конфигурации и логи планировщика cron
Основной файл конфигурации демона cron — /etc/crontab. Помимо cron-файла, задачи можно запускать из следующих директорий:
- /etc/cron.daily – запуск скриптов один раз в день
- /etc/cron.hourly – запуск скриптов ежечасно
- /etc/cron.monthly – запуск скриптов раз в месяц
- /etc/cron.weekly – запуск скриптов раз в неделю
Просто разместите нужны скрипты в нужную директорию, и они будут выполняться согласно расписания.
Можно ограничить доступ к планировщику с помощью файлов /etc/cron.allow и /etc/cron.deny. Достаточно создать эти файлы и добавить в него пользователей, которым, соотвественно, разрешено и запрещено запускать задания cron.
В файл /etc/crontab тоже можно помещать задания. Обычно данный файл используется root пользователем или для настройки системных задач. Личные файлы пользователей для cron заданий, хранятся в директории /var/spool/cron/ или /var/cron/tabs/.
Чтобы отследить выполнение задач или отследить ошибки, можно обратиться к лог-файлу /var/log/cron. В данном файле фиксируется запуск всех задач и ошибки в работе демона, если они есть:
Источник
Как добавить команду в Cron
При администрировании и настройке серверов очень часто надо настраивать автоматическое выполнение определенных скриптов или программ через равные промежутки времени. Это может быть резервное копирование, отправка отчётов о состоянии сервера или другие тому подобные вещи.
Служба cron — это стандартный планировщик задач в Linux. С помощью него вы можете запланировать выполнение команды или скрипта один или несколько раз, в определенную минуту, час, день, неделю и месяц. В этой статье мы подробно рассмотрим как выполняется настройка Cron в Linux на примере дистрибутива Ubuntu.
Как посмотреть задания cron
Думаю, что начать следует не с настройки, а именно как посмотреть уже настроенные задачи cron. На самом деле задачи хранятся в трёх местах:
- База данных crontab — здесь хранятся все записи cron пользователя, которые вы настраиваете вручную;
- /etc/crontab и /etc/cron.d/ — системные записи cron и записи cron различных пакетов;
- /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly, /etc/cron.monthly — здесь лежат скрипты, которые надо выполнять раз в час, день, неделю и месяц соответственно, обычно эти папки используются различными пакетами, но вы тоже можете их использовать для своих скриптов.
Чтобы посмотреть задания cron добавленные текущим пользователем используйте команду crontab и опцию -l:
Все задачи cron разделены по пользователям, и команды из этих задач будут выполнятся от имени того пользователя, для которого они были добавлены. Чтобы посмотреть задачи другого пользователя используйте опцию -u:
sudo crontab -u root -l
А теперь давайте поговорим о том, как добавить команду cron для нужного вам пользователя.
Добавление команды в cron
Чтобы добавить задание cron из терминала можно использовать утилиту crontab. Для открытия временного файла с текущими заданиями этого пользователя выполните:
Все запланированные действия будут выполнятся от текущего пользователя, если вы хотите указать другого пользователя используйте опцию -u:
sudo crontab -u имя_пользователя -e
Команда откроет текстовый редактор, где вы сможете добавлять или редактировать задания cron. Будет использован установленный по умолчанию редактор, например, vim:
Каждая задача формируется следующим образом:
минута(0-59) час(0-23) день(1-31) месяц(1-12) день_недели(0-7) /полный/путь/к/команде
Чтобы подставить любое значение используйте звездочку «*«. Первые пять параметров характеризуют время выполнения, а последний, это путь к команде или скрипту, который нужно выполнить. Обратите внимание, что значение переменной PATH здесь не действует, поэтому путь надо писать полностью либо объявлять свою переменную PATH в начале файла настройки. Давайте сделаем простой скрипт, который будет выводить в лог дату своего запуска и поможет отладить всё это:
sudo vi /usr/local/bin/script.sh
#!/bin/bash
echo $(date) >> /var/log/testcron.log
Сделайте скрипт исполняемым:
sudo chmod ugo+x /usr/local/bin/script.sh
Самый простой пример как запускать cron каждую минуту. Вместо всех параметров ставим просто звездочку:
Или только в нулевую минуту, то есть в начале каждого часа или другими словами запуск cron каждый час:
Можно указать несколько значений через запятую, для того чтобы определить несколько точек запуска. Например, будем запускать скрипт cron каждые 15 минут:
Можно записывать значения через дефис чтобы указывать промежутки точек запуска. Например, для того чтобы запускать скрипт каждую минуту, но только первые 10 минут каждого часа используйте:
Чтобы чтобы настроить интервал выполнения более тонко можно использовать слеш (/) с помощью этого символа и звездочки можно указать шаг с которым будет выполнятся команда. Например, каждые пять минут:
Чтобы запустить cron каждые 10 минут используйте:
А для запуска cron каждые 30 минут:
Аналогичным образом задаются часы, например, выполнять скрипт только 6:00 и 18:00:
0 6,18 * * * /usr/local/bin/script.sh
А вот запустить cron каждую секунду или раз в 30 секунд не получится. Минимальная единица времени в cron это минута. Но можно создать команду, которая будет запускаться раз в минуту и по 30 секунд спать и затем снова делать:
* * * * * /usr/local/bin/script.sh && sleep 30 && /usr/local/bin/script.sh
Это довольно плохой подход и лучше так не делать. Кроме того, для экономии времени при работе с cron можно использовать специальные слова-маркеры времени. Вот они:
- @reboot — при перезагрузке;
- @yearly, @annually — раз в год (0 0 1 1 *);
- @monthly — раз в месяц (0 0 1 * *);
- @weekly — раз в неделю (0 0 * * 0);
- @daily, @midnight — раз в день в полночь (0 0 * * *);
- @hourly — раз в час (0 * * * *).
Для подбора правильной комбинации даты можно использовать сервис crontab.guru. Он позволяет в реальном времени посмотреть когда будет выполнено то или иное условие:
Когда настройка cron linux будет завершена, сохраните изменения и закройте файл. Для этого в Nano нажмите Ctrl+O для сохранения и Ctrl+X для закрытия редактора, а в Vim нажмите Esc и наберите :wq. Теперь новые задания Cron будут добавлены и активированы. Посмотреть как выполняется ваш Cron вы можете с помощью скрипта, который я привел выше либо в лог файле. Сервис cron пишет свои логи в стандартный журнал syslog. В Ubuntu они сохраняются в файле /var/log/syslog:
cat /var/log/syslog | grep CRON
Если во время работы возникнут ошибки cron, они тоже будут здесь. Если же вам надо добавить задание Cron из какого либо скрипта, то вы всегда можете поместить свой скрипт в папку /etc/cron.d или /cron/hourly. чтобы выполнять его когда надо, только не забудьте сделать скрипт исполняемым.
Выводы
В этой статье мы разобрались как выполняется настройка cron linux на примере Ubuntu. Как видите, все только кажется сложным, но на самом деле просто если разобраться.
Источник