Cron - системный демон, используемый для выполнения задач (в фоновом режиме) в указанное время.
Crontab — это команда, используемая для установки, удаления или вывода файла конфигурации cron, используемого для управления демоном cron. Каждый пользователь может иметь свой собственный файл задач crontab, и хотя эти файлы хранятся в /var/spool/cron/crontabs, они не предназначены для прямого редактирования. Вам нужно использовать команду crontab для редактирования или настройки ваших собственных заданий cron.
Конфигурационные файлы
Системный Сrontab: Обычно используется системными службами и критическими заданиями, требующими привилегий root доступа. Шестое поле (см. ниже описание поля) — это имя пользователя которое по умолчанию присвоено команде. Это дает системе возможность запускать команды от разных пользователей.
Пользовательский crontab: Пользователь может установить свои собственные задания cron, используя команду crontab. Шестое поле — это команда для запуска, и все команды будут выполняться от пользователя, который задал их в своем собственном crontab.
Создать или отредактировать собственные задания cron:
crontab -e no crontab for fito - 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/mcedit 4. /usr/bin/vim.tiny Choose 1-4 [1]:
Синтаксис:
1 2 3 4 5 /path/to/command comnd1 comnd2 или 1 2 3 4 5 /root/n_sync.sh
Где цифры обозначают:
Более понятным языком:
* * * * * Команда, которая будет выполнена - - - - - | | | | | | | | | - День недели (0 - 7) (воскресенье = 0 или 7) | | | --- Месяц (1 - 12) | | --- День месяца (1 - 31) | ---- Час (0 - 23) ----- Минута (0 - 59)
Параметры команды Crontab
Следующие файлы ограничивают доступ к планировщику (по умолчанию они не существуют):
Используйте специальную строку:
Вместо первых пяти полей вы можете использовать любую из восьми специальных строк. Это не только сэкономит ваше время, но и улучшит читаемость.
Как использовать операторы?
Первым делом необходимо определить среду. Если указатель оболочки упущен, cron будет использовать значение по умолчанию, которое равно sh. Если переменная PATH не указана, расположение файлов будет абсолютным. Если перемененная HOME упущенная, cron будет использовать домашний каталог.
Кроме того, cron считывает файлы в каталоге /etc/cron.d/. Обычно это файлы демона системы, такие как sa-update или sysstat. В качестве пользователя root, для настройки заданий cron, вы можете использовать каталоги которые указаны ниже. Здесь вы можете напрямую запускать свои скрипты. Команда run-parts запускает скрипты или программы в каталоге через /etc/crontab файл:
/etc/crontab - это файл crontab системы. Обычно используется только пользователем root или для настройки системных задач. Обычные пользователи должны использовать команду crontab для установки и редактирования своих заданий. /var/spool/cron/ или /var/cron/tabs/ — это каталог для личных файлов пользователя crontab.
# /etc/crontab: system-wide crontab # Unlike any other crontab you don't have to run the `crontab' # command to install the new version when you edit this file # and files in /etc/cron.d. These files also have username fields, # that none of the other crontabs do. SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user-name command to be executed 17 * * * * root cd / && run-parts --report /etc/cron.hourly 25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ) 47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly ) 52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly ) #
или
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
Сохранение списка заданий в файл
# crontab -l > /path/to/file # crontab -u user -l > /path/to/file
Пример использования:
# Выполнять скрипт backupscript каждые 5 минут: */5 * * * * /root/backupscript.sh # Выполнять скрипт backupscript каждый день в час ночи: 0 1 * * * /root/backupscript.sh # Выполнять скрипт каждый месяц первого числа в три часа ночи пятнадцать минут: 15 3 1 * * /root/backupscript.sh # Запуск команды ntpdate каждый час: @hourly /path/to/ntpdate # Запуск скрипта каждый понедельник в 9:00 и 18:00 часов: 0 9,18 * * 1 /home/ivan/script.sh # Запуск скрипта каждый день в 0:30 и 12:30: 30 */12 * * * script.sh # Запуск команды каждый месяц 1 числа в 12:00: 0 12 1 * * command # Запуск скрипта в полночь с понедельника по пятницу: 0 0 * * 1-5 /home/ivan/script.sh