Воскресенье, 17.11.2024, 05:42

Компьютерная помощь

Записки системного администратора

Меню сайта
Категории раздела
Компьютер [36]
Общекомпьютерные темы
Windows server [18]
Статьи по версиям windows для серверов.
Windows [30]
Статьи по версиям windows для рабочих станций.
Unix [65]
Статьи на тему unix-подобных систем. Linux, FreeBSD и т.п.
Видеомонтаж [10]
Статьи по нелинейному видеомонтажу
Программирование [9]
Заметки по программированию
Databases [10]
Статистика

Онлайн всего: 2
Гостей: 2
Пользователей: 0
Вход на сайт

Поиск

Главная » Статьи » Unix

Cron — запуск программ по расписанию

В Linux Debian (Ubuntu), как и в других Unix системах, существует возможность запускать программы пользователя в указанное им время. Для этого используется программа cron, которая получает инструкции от пользователей и следуя им производит выполнение задач по полученным сценариям.

 

Как настраивать cron

Каждый пользователь системы имеет свой собственный файл, в котором прописаны все задания от данного пользователя (/var/spool/cron/). Просмотреть задания, которые уже добавлены в Ваш cron файл (в cron файл Вашего пользователя) можно командой:

crontab -l

Конфигурирование сценариев cron производится путем добавления задания в планировщик. Для этого нужно определить какие программы вы хотите запускать и узнать полные пути к ним на диске сервера. Перейдите с помощью команды cd в каталог где находится запускаемая программа и узнайте полный путь к этому каталогу с помощью команды pwd. Путь может выглядеть например как /home/user1/scripts/script.sh. (В файле script.sh должен быть скрипт выполнения сценария cron. Это отдельная тема, на которую будет опубликована статья). Убедитесь что файл, который вы хотите запускать, имеет права на чтение+исполнение (r+x) для владельца файла.

Поменять права на нужные можно командой:

chmod 750 script.sh

Далее выполните команду crontab -e. Вы окажетесь в текстовом редакторе nano (или в том редакторе который у вас установлен по умолчанию), где сможете вводить текст сценария для cron.

Задания для cron пишутся по одному в строке. После каждой строки, в том числе после последней или единственной, обязательно нужно нажать enter — иначе задания работать не будут.

Задание для cron выглядит как строка, в начале находятся пять обязательных полей для указания периодичности задания, а далее следует команда, которую нужно запускать:

поле1 поле2 поле3 поле4 поле5 команда

Значения первых пяти полей:

  1. минуты — число от 0 до 59

  2. часы — число от 0 до 23

  3. день месяца — число от 1 до 31

  4. номер месяца в году — число от 1 до 12

  5. день недели — число от 0 до 7 (0-Вс,1-Пн,2-Вт,3-Ср,4-Чт,5-Пт,6-Сб,7-Вс)

Для каждого конкретного параметра можно задать несколько значений через запятую. Например, если в поле «часы» написать 1,4,22, то задание будет запущено в 1 час ночи, в 4 часа утра и в 22 часа. Можно задать интервал — 4-9 будет означать, что программу нужно запускать каждый час в период с 4 до 9 часов включительно. Символ '*' означает «все возможные значения». Например, указание '*' в поле «часы» будет означать «запускать каждый час». Символ '/' служит для указания дополнительной периодичности задания. Например, '*/3' в поле «часы» означает «каждые три часа».

Примечание: если определены оба поля "день месяца" и "день недели" (т.е не равны *), то такое задание будет выполняться в каждый указанный день недели независимо от дня месяца. Например, следующая команда будет выполняться в 13 часов 13 минут каждую пятницу и каждое 10 число месяца, даже если 10 число не совпадет с пятницей.

13 13 10 * 5 /home/user1/script.sh

Итак, как выглядит простейший сценарий cron:

0 */3 * * 2,5 /home/user1/script.sh

Скрипт /home/user1/script.sh будет автоматически запускаться каждые три часа во вторник и в пятницу. Введя такой сценарий в редакторе nano выйдите с сохранением результатов редактирования и, если вы не допустили ошибок, задание будет поставлено на выполнение с указанной периодичностью. Если при редактировании были допущены ошибки, cron сообщит вам о них.

Например:

/tmp/crontab.xxxxxxx: 1 строк, 9 символов
crontab: installing new crontab
"/tmp/crontab.xxxxxxx":1: bad minute
crontab: errors in crontab file, can't install
Do you want to retry the same edit?

Исправьте ошибки и попробуйте сохранить задание опять.

Посмотреть список уже установленных в cron сценариев можно командой crontab -l:

-bash-2.05b$ crontab -l
0 */3 * * 2,5 /home/user1/script.sh

Примеры использования cron

Ниже приводятся примеры заданий для cron. Надеемся, эта информация поможет вам лучше понять работу этой программы.

# выполнять задание раз в час в 0 минут
0 */1 * * * /home/user1/script.sh

# выполнять задание каждые три часа в 0 минут
0 */3 * * * /home/user1/script.sh

# выполнять задание по понедельникам в 1 час 15 минут ночи
15 1 * * 1 /home/user1/script.sh

# выполнять задание 5 апреля в 0 часов 1 минуту каждый год
1 0 5 4 * /home/user1/script.sh

# выполнять задание ежемесячно 1 числа в 6 часов 10 минут
10 6 1 * * /home/user1/script.sh

 

Как получать сообщения об ошибках от программ, запускаемых cron

Если при выполнении программы, которая запускается из cron, возникли ошибки, наверняка вы захотите получать сообщения об этих ошибках, чтобы полностью контролировать работу периодически запускаемых заданий. Для этого в начале cron-сценария поместите такую строку:

MAILTO=адрес@домен.ua

Конечно, адрес@домен.ua нужно заменить на реально существующий адрес электронной почты куда надо будет доставлять уведомления. Если нужно получать сообщения об ошибках на несколько адресов, укажите все эти адреса через запятую.

Категория: Unix | Добавил: admin (10.03.2016)
Просмотров: 2186 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *: