- Планировщик задач linux debian
- Debian. Шпаргалка сисадмина. Планировщик задач
- Планировщик задач linux debian
- Список задач
- Выполнение задания каждую минуту в Crontab
- Как выполнять задание каждую пятницу в час ночи
- Выполняем задание по будним дням в 8:00 утра
- Выполнение через 10 минут после каждого часа 1 числа каждого месяца
- Запуск задания каждые 10 минут
- Специальные слова
- Сохранение выходных данных Crontab
- Отправка выходных данных на e-mail из Crontab
- Отправка выходных данных Crontab только одного задания cronjob
- Игнорирование выходных данных задания Crontab
- Предупреждение
Планировщик задач linux debian
Планировщик заданий cron
cron — демон-планировщик задач в UNIX-подобных операционных системах, использующийся для периодического выполнения заданий в определённое время. Регулярные действия описываются инструкциями, помещенными в файлы crontab, которые находятся в каталоге:
редактировать их вручную не рекомендуется, для этого используют команду crontab -e.
Основной файл конфигурации cron, /etc/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.
# m h dom mon dow user command
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 )
#
Каждый пользователь системы имеет свой файл заданий crontab, в котором описано, в какое время и какие программы запускать от имени этого пользователя. Для редактирования файла crontab используется специальная одноименная программа crontab, позволяющая не прерывать процесс cron на время редактирования.
Для редактирования файла crontab вашего пользователя используется команда[2]:
Таблица crontab состоит из 6 колонок, разделяемых пробелами или табуляторами. Первые пять колонок задают время выполнения (Минута, Час, День, Месяц, День недели), в них может находиться число, список чисел, разделённых запятыми, диапазон чисел, разделённых тире или символ ‘*’. Все остальные символы в строке интерпретируются как выполняемая команда с её параметрами. Если команда отправляет какой-нибудь текст в стандартный вывод, этот текст отправляется по e-mail пользователю.
* * * * * выполняемая команда
— — — — —
| | | | |
| | | | —— День недели (0 — 7) (Воскресенье =0 или =7)
| | | ——- Месяц (1 — 12)
| | ——— День (1 — 31)
| ———— Час (0 — 23)
————- Минута (0 — 59)
Пример файла crontab:
# как обычно, с символа ‘#’ начинаются комментарии
# в качестве командного интерпретатора использовать /bin/sh
SHELL=/bin/sh
# результаты работы отправлять по этому адресу
MAILTO= Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.
# добавить в PATH
PATH=$PATH:$HOME/bin
#### Здесь начинаются задания
# выполнять каждый день в 0 часов 5 минут, результат складывать в log/daily
5 0 * * * $HOME/bin/daily.job >> $HOME/log/daily 2>&1
# выполнять 1 числа каждого месяца в 14 часов 15 минут
15 14 1 * * $HOME/bin/monthly
# каждый рабочий день в 22:00
0 22 * * 1-5 echo «Пора домой» | mail -s «Уже 22:00» john
23 */2 * * * echo «Выполняется в 0:23, 2:23, 4:23 и т. д.»
5 4 * * sun echo «Выполняется в 4:05 в воскресенье»
0 0 1 1 * echo «С новым годом!»
15 10,13 * * 1,4 echo «Эта надпись выводится в понедельник и четверг в 10:15 и 13:15»
0-59 * * * * echo «Выполняется ежеминутно»
1-59/2 * * * * echo «Выполняется по нечетным минутам»
# каждые 5 минут
*/5 * * * * echo «Прошло пять минут»
Пример Сrontab в Ubuntu 9.10
Редактируем от пользователя user
sudo crontab -e -u user
где user -пользователь от имени которого будет производиться запуск.
# m h dom mon dow command
# Запускаю eMule ночью в 1 час ночи 10 минут
10 1 * * * export DISPLAY=:0 && amule
# Останавливаю Emule утром в 10 часов 10 минут
10 10 * * * export DISPLAY=:0 && killall amule
export DISPLAY=:0 && -Выводим на дисплей (если есть что выводить)
часто этого не достаточно для запуска графических приложений, для возможности локально подключаться к X серверу необходимо добавить
в файл .profile находящийся в домашнем каталоге пользователя.
Стоит добавить, чтобы задачи выполнялись корректно, необходимо в конце файла с заданием оставить пустую строку, которая создается crontab по умолчанию.
Для удобства пользователей во многих системах есть специальные программы графического интерфейса управления cron.
Для Debian-based дистрибутивов:
Установка: sudo apt-get install gnome-schedule
Запуск: Applications → System tools → Schedule
Kcron представляет собой KDE-интерфейс для редактирования конфигурационных файлов cron. Утилита запускается по Alt+F2, в окне редактирования можно указать мышью:
- полный путь к выполняемому файлу программы
- нужное время запуска программы
- переменные окружения, необходимые во время исполнения программы
Источник
Debian. Шпаргалка сисадмина. Планировщик задач
Автоматизация рутинных задач — ключ к спокойствию системного администратора, да и к тому же более эффективное использование рабочего времени. Рассмотрение в этом контексте возможностей и нюансов использования планировщиков задач в Debian является вполне закономерным. В этой статье — следующей из серии «Шпаркалка сисадмина» — будут рассмотрены планировщик cron и асинхронный планировщик anacron.
cron — демон, основная задача которого — выполнение запланированных задач.
crontab — программа, используемая для поддержки (создания, удаления, модификации) файлов crontab (располагаются в /var/spool/cron/crontabs) индивидуально для каждого пользователя системы.
anacron — асинхронный (анахроничный) cron; является аналогом cron, только задания выполняет не по расписанию, а через заданные интервалы времени.
Теперь обо всем подробнее.
Cron 1 запускается процессом init из /etc/init.d во время загрузки системы. Основной конфигурационный файл — /etc/crontab. Каждую минуту сron просматривает содержимое каталога /var/spool/cron/crontabs на предмет файлов crontab и если находит их (или обнаруживает, что изменилось время модификации существующих файлов), то загружает (или обновляет, в случае с изменением существующих файлов) их в оперативную память. Эта особенность работы позволяет обойти необходимость перезапуска демона при изменении запланированных задач. Изменять файлы в каталоге /var/spool/cron/crontabs вручную не рекомендуется, для этого используется команда crontab -e.
Каждую минуту cron проверяет все файлы crontab на предмет команд, которые необходимо выполнить в данный момент. После выполнения команды может быть отправлено уведомление по почте владельцу файла crontab (или пользователю, адрес которого определен в переменной MAILTO в /etc/crontab, если он вообще определен).
Также существует заранее определенное поведение планировщика при изменении времени (например переход на летнее и зимнее время) 2 :
Локальные изменения времени меньше чем на 3 часа (например, переход на летнее или зимнее время) обрабатываются специальным образом. Это относится только к задачам, которые запускаются в определенное время или периодом более одного часа. Задачи, которые выполняются чаще, исполняются как обычно.
Если время было переведено вперед, задачи, которые должны были быть выполнены в течение пропущенного интервала, будут запущены немедленно. И наоборот, если время было переведено назад, принимаются меры для предотвращения запуска задачи дважды.
Изменения времени более чем на 3 часа считается коррекцией времени или временной зоны, и новое время начинает использоваться немедленно.
Применительно к Debian существует ряд различий: файлы crontab предварительно разделены на несколько каталогов в зависимости от необходимой частоты выполнения (/etc/cron.hourly — ежечасно, /etc/cron.daily — ежедневно, /etc/cron.weekly — еженедельно, /etc/cron.monthly — ежемесячно). Выполнение заданий в этих каталогах отключено, если установлен anacron (кроме ежечасного задания), чтобы предотвратить конфликты между демонами. Файлы в этих директориях должны удовлетворять ряду требований 3 . Помимо каталогов упомянутых выше, в Debian можно использовать каталог /etc/cron.d, в который также можно поместить файлы с необходимыми командами и которые имеют какое-либо нестандартное расписание выполнения. Требования для файлов в каталогах идентичны.
Теперь подробнее о формате команд.
Каждая команда cron имеет следующую маску:
Допустимо указание нескольких значений через запятую или диапазон значений через тире. При необходимости можно указать шаг значений через слэш («/») — это можно сделать как с использованием чисел (2/3), так и с использованием звездочки (*/2). Если какое-либо из полей не используется, вместо него должна быть звездочка. Если будут указаны только звездочки и не определен ни один из временных параметров, то задание будет выполняться каждую минуту.
Anacron 4 работает несколько иным образом.
Стоить сразу отметить, что anacron по умолчанию не поставляется с дистрибутивом debian, придется его ставить отдельно.
Принципиальное отличие anacron в том, что он рассчитан на асинхронное выполнение команд. Это значит, что даже если сервер был выключен и в этот период должно было выполниться задание, оно обязательно выполнится сразу как сервер окажется включенным. Cron такой функционал предоставить не может и задания выполнены не будут, если в ожидаемое время их выполнения компьютер был выключен.
Формат команд имеет следующий вид:
Anacron предназначен не для замены, но для дополнения cron. Минимальный период выполнения команд — 1 день. При выполнении задачи создается специальный файл в каталоге /var/spool/anacron/ с отметкой времени и при следующей проверке anacron определяет когда последний раз запускалось задание и если время последнего выполнения отличается от текущего больше чем на количество дней, которое определено в команде anacron, то выполняется принудительный запуск задачи с определенной задержкой. Задержка используется главным образом для исключения ситуации одновременного выполнения ресурсоемких задач.
На этом обзор планировщиков закончен. Примеры 5 6 команд широко доступны на различных ресурсах в сети и их публикация в рамках этой статьи будет излишней.
Источник
Планировщик задач linux debian
Если у Вас появилась необходимость запускать на ПК/сервере с Linux определенные команды или скрипты через равный промежуток времени или в назначенное время, то на помощь приходит Crontab! Это планировщик заданий (или менеджер, как больше нравится). Таким образом можно запускать задания резервного копирования, синхронизации, обновления, обслуживания системы и многое другое.
Список задач
Crontab (cron происходит от chronos, c греческого «время»; tab означает таблица) — это служба, которая присутствует в Unix и Unix-подобных операционных системах, используется для планирования периодического выполнения команд. Чтобы посмотреть, какие задачи crontab сейчас активны в Вашей системе, введите в окне терминала следующую команду:
Для редактирования списка заданий можно запустить:
Это откроет редактор по-умолчанию, чтобы изменять задания crontab. После сохранения файла в редакторе, задания обновятся. Формат записей таков:
Как мы видим, в самом начале идет 5 звезд. Звезды представляют собой различные части даты, их последовательность следующая:
- минута (от 0 до 59)
- час (с 0 до 23)
- день месяца (с 1 по 31)
- месяц (от 1 до 12)
- день недели (от 0 до 6) (0=воскресенье)
Выполнение задания каждую минуту в Crontab
Если Вы установите звездочку, это будет означать буквально все. Например, такая запись, как была выше, определяет выполнение задания каждую минуту:
Задание будет выполняться: каждую минуту, каждый час, каждый день месяца, каждый месяц, и так каждый день на неделе.
Как выполнять задание каждую пятницу в час ночи
Если мы хотим запланировать запуск скрипта в час ночи каждую пятницу, нам понадобится следующая запись в cron:
Выполняем задание по будним дням в 8:00 утра
Выполнение через 10 минут после каждого часа 1 числа каждого месяца
Честно говоря, все не так сложно, верно? Просто это требует некоторой практики.
Запуск задания каждые 10 минут
Это можно было бы сделать так:
Но это не будет красивым решением. Правильнее сделать так:
Специальные слова
В самом начале взамен звездочек применяйте специальные слова:
Пример задания, которое будет выполняться каждый день в 00:00:
Сохранение выходных данных Crontab
По-умолчанию cron сохраняет выходные /bin/execute/this/script.sh данные в почтовый ящик пользователя (в данном случае root). Но это красивее, если выход будет сохраняться в отдельном логе. Сделаем это так:
Linux может создавать журналы на разных уровнях. Стандартный выход (STDOUT) и стандартные ошибки (STDERR). STDOUT помечается как 1, STDERR-как 2. Так что… следующая инструкция говорит Linux хранить STDERR в STDOUT, а также, создать один поток данных для сообщений и ошибок:
Теперь, когда у нас есть 1 выходной поток, мы можем вылить его в файл. Если знак больше один (>) файл будет перезаписываться, два знака больше (>>) данные всегда будут добавляться к файлу в конец. В нашем случае мы хотели бы добавлять данные:
Отправка выходных данных на e-mail из Crontab
По умолчанию cron шлет выходные данные на почтовый ящик локального пользователя. Но мы можем настроить Crontab для перенаправления всех выходных данных на реальный адрес электронной почты, добавив следующую переменную в crontab:
Отправка выходных данных Crontab только одного задания cronjob
Если Вы хотите получать по почте выходные данные задания, установите этот пакет:
И добавить в задание вот что:
Игнорирование выходных данных задания Crontab
Делается это очень просто:
Мы передаем вывод в /dev/null это специальный файл, который отбрасывает все данные (нулевое устройство, «черная дыра»).
Предупреждение
Многие скрипты исполняются в среде Bash с переменной PATH. И поэтому может случиться так, что Ваши скрипты работают в Вашей оболочке, но когда запустите в Cron (где PATH переменная отличается), скрипту не удается найти указанные исполняемые файлы и задание завершается ошибкой. Поэтому используйте в файле заданий Crontab специальную переменную PATH:
Источник