Настройка Crontab

Пример

Рассмотрим пример создания файла crontab для пользователя user ,домашняя директория /home/user

Задача: запускать каждую минуту файл /home/user/mail, который будет отправлять почту

#содержимое файла mail (файл должен быть с правами на запуск! например -rwxr-xr-x)

#!/bin/bash
mess="test cron"
echo "$mess" |mutt -s "subj" -m application/octet-stream bob@server.ru

1.Создаем временный файл /home/user/test содержимое файла test такое:

SHELL=/bin/bash
MAILTO=user
0-59 * * * * /home/user/mail

2. Запускаем в терминале команду crontab /home/user/test

Все. После этого в каталоге /var/spool/cron будет создан файл «user» примерно с таким содержимым

# DO NOT EDIT THIS FILE - edit the master and reinstall.
# (/home/user/test installed on Mon Mar 29 02:31:34 2004)
# (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $)
SHELL=/bin/bash
MAILTO=user
0-59 * * * * /home/user/mail

и файл /home/user/mail будет запускаться демоном cron каждую минуту.

Доступ в каталог /var/spool/cron непривилегированому пользователю закрыт, что бы посмотреть юзером «user» есть ли у него файл crontab ,достаточно набрать команду crontab -l , если файл существует-будет показано его содержимое.

Для удаления файла используется команда crontab -r

Для редактирования crontab -e

Для управления файлами crontab пользователем «root» используется синтаксис:

crontab -u user_name file       

-создание файла crontab из файла «file» для юзера «user_name»

-u означает чей crontab будет обработан, Если опция не задана, то будет обработан crontab того пользователя, который запустил команду crontab.

crontab -u user_name -l       

-просмотр файла crontab юзера «user_name»

crontab -u user_name -r      

-удаление файла crontab юзера «user_name»

crontab -u user_name -e      

-редактирование файла crontab юзера «user_name» используя редактор, заданный переменной окружения VISUAL или EDITOR

Формат и значения полей

Каждая команда в пользовательском файле crontab занимает одну строку и состоит из шести полей. Пользовательские файлы crontab находятся в каталоге /var/spool/cron

Общий формат команды:


минута час день_месяца месяц день_недели команда

————————————————

Допустимые значения:
минута        от 0 до 59
час           от 0 до 23
день_месяца   от 1 до 31
месяц         от 1 до 12 (можно три буквы из названия месяца,
                        регистр не имеет значения от jan до dec)
день_недели   от 0 до 6  (0 это воскресенье, 
                        можно писать от sun до sat)

Каждое из полей даты и времени может быть обозначено символом * ,будет соответствовать любому возможному значению. Для этих полей можно указывать диапазоны значений, разделенных дефисом, например:

  • 5 4-10 0-3 * echo «HELLO» -печать HELLO в 5:00 на 4,5,6,7,8,9,10

дни января, февраля, марта и апреля

пошаговая запись

  • */2 * * sat echo «HELLO» -печать HELLO каждый четный час,

каждую субботу

равнозначная предыдущему примеру запись (списком)

  • 0,2,4,6,8,10,12,14,16,18,20,22 * * sat echo «HELLO»
    1. печать HELLO каждый четный

час, каждую субботу

то же самое с указанием диапазона

  • 0-23/2 * * sat echo «HELLO» -печать HELLO каждый четный

час, каждую субботу

59 23 31 dec * echo "Happy new year" -без комментариев :),
                                    поздравит с новым годом

Для отладки задания cron, можно перенаправить результат в файл

Пример:

0-59 * * * * /home/user/mail 2>/tmp/tmp.cron

Если при запуске команды /home/user/mail возникнут ошибки, то они будут записаны в файл /tmp/tmp.cron и вы всегда сможете узнать причину. В случае перенаправления вывода в файл, письмо, юзеру указаному в переменной MAILTO отправлено не будет.

Посмотреть информацию о всех командах запускаемых демоном cron можно в каталоге /var/log называются cron, cron1 и т.д.

В файле /var/log/cron записано время запуска всех заданий cron за предыдущий день

Mar 29 04:03:00 rst CROND[4434]: (user) CMD (/home/user/mail) 
Mar 29 04:03:59 rst CROND[4493]: (user) CMD (/home/user/mail) 
Mar 29 04:05:00 rst CROND[4507]: (user) CMD (/home/user/mail) 
Mar 29 04:06:00 rst CROND[4549]: (user) CMD (/home/user/mail) 

В остальных файлах cron1,cron2 находится подобная информация, но более старая чем в cron

Система

  • system/crontab.txt
  • Последние изменения: 2015/01/12