Меню Рубрики

Какой планировщик заданий используется в linux

Планировщик заданий Cron в Linux

Если у Вас появилась необходимость запускать на ПК/сервере с 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:

Источник

Настройка планировщика Cron в Linux

Планировщик заданий является по праву одним из важных компонентов системы. По умолчанию, в дистрибутивах Linux, а также FreeBSD, используется планировщик заданий Cron. Рассмотрим как его настроить.

Настроить cron можно несколькими способами. Самый простой и быстрый — указать задание руками в файл /etc/crontab. Проблема в том, что это может сделать только пользователь root.

Структура файла /etc/crontab представляет собой последовательность установок даты и времени, имени пользователя от которого выполняется задача и явное указание исполняемого файла.

# m h dom mon dow user command

# — строка закомментирована, т.е. не выполняется планировщиком

m — минуты. Диапазон значений 0-59

h — часы. Диапазон значений 0-23.

dom — day of month — день месяца (число). Диапазон значений 1-31

mon — месяц. Диапазон значений 1-12

dow — day of week — день недели. указывается числом, где 0 — воскресенье, 6 — суббота.

user — пользователь от которого выполняется задача.

command — выполняемая задача.

Важно! Значения минут, часов, дней месяца, дней недели, а также месяца могут быть * (звездочкой) принимая все доступные значения. Также можно использовать список параметров разделенных запятой.

Примеры разберем подробнее немного позже.

Простым пользователям доступна системная утилита crontab. Для гибкости использования используются параметры:

Используется для редактирования или создания файла расписания для текущего пользователя

Вывод существующих задач в расписании пользователя

Удаление файла расписания текущего пользователя

crontab -u username

Работа с расписаниями указанных пользователей. Выполняется только от пользователя root

Для этого в консоли пишем команду:

Запустится редактор файла используемый по умолчанию (Ubuntu — nano/vi, FreeBSD — ee), в нашем случае mcedit из пакета Midnight Commander.

Синтаксис команд идентичен как и для файла /etc/crontab, за исключением отсутствия параметра имени пользователя. Это значит, что после сохранения файла, все задачи будут выполняться от текущего пользователя.

Сохраняем файл, выходим из редактора и проверяем список заданий crontab -l.

Проверим как работает удаление файла заданий — crontab -r.

Важно! Программа не спрашивает уверены ли вы в удалении файла заданий. Если нужно удалить конкретное задание, следует использовать crontab -e.

Для администратора важно, чтобы не все пользователи могли пользоваться планировщиком. Для этих целей можно использовать файлы /etc/cron.allow и /etc/cron.deny (в некоторых дистрибутивах эти файлы должны размещаться в /etc/cton.d). По умолчанию, использование cron разрешено всем пользователям.

Примеры использования в файле /etc/crontab.

Выполнение задачи каждые 5 минут от пользователя root:

*/5 * * * * root /root/scripts/script1.sh

В полдень и полночь:

0 */12 * * * root /root/scripts/backup.sh

Перезагрузка сервера в 0:00 в первый день месяца (исключительно как пример):

0 0 1 * * root reboot

Выполнение скрипта с понедельника по пятницу в полночь:

0 0 * * 1-5 root /root/script/backup_db.sh

* 0 * * 1-5 root /root/script/backup_db.sh

Ошибка в том, что скрипт будет запускаться с понедельника по пятницу каждую минуту с 0:00 по 0:59

В заданиях назначаемых через crontab -e (т.е. от текущего пользователя) не указывается параметр имени пользователя, в случае примеров — root.

На что еще следует обратить внимание:

Все пути до исполняемых файлов следует писать абсолютными.

Скрипты исполняются из корневой директории, а следовательно, при написании скрипта следует указывать рабочий каталог, либо абсолютные пути до целевых файлов (если в ходе работы скрипта генерируются файлы-отчета и им подобные)

Источник

6 мин для чтения Планирование заданий в Linux с помощью команды at

Главное меню » Linux » Планирование заданий в Linux с помощью команды at

Это можно сравнить с концепцией Crontab в Linux, которая является лучшим способом автоматизации повторяющихся задач.

В этой статье мы покажем, как вы можете использовать команду «at» для планирования выполнения задач и команд на определенное время в будущем.

Установка по команде в Linux

Прежде чем начать, вы должны проверить, установлено ли «at» в вашей системе. Он не установлен по умолчанию во всех операционных системах.

Вы можете проверить это, набрав:

Если программное обеспечение уже установлено, вернется номер версии. Если нет, его можно установить в системах на основе Debian, набрав:

Если вы используете другой дистрибутив Linux, то вам, возможно, придется изменить эту команду, чтобы отразить менеджер пакетов, используемый вашим дистрибутивом.

Начало

Утилита at на самом деле представляет собой серию команд, которые работают вместе для планирования заданий. Как мы уже упоминали, at предпочтительнее для ситуаций, когда ваша задача больше «одноразовая», чем повторяющееся событие.

Мы составили таблицу с некоторыми основными командами, связанными с at.

команда функция
at позволяет пользователю планировать задачу
atq выводит список заданий в очередь для вошедшего в систему пользователя или всех пользователей, если они запускаются как sudo
atrm удаляет задания по указанному номеру задания
batch указывает системе запускать задание только в указанное время, если загрузка системы находится на определенном уровне (средняя загрузка

Использование команды at в Linux для планирования заданий

Использование at имеет свой уникальный формат. Когда вы хотите запланировать работу, вы наберете в свой терминал:

Время является обязательным, но дата является необязательной. Если ничего не введено, будет сделано предположение на основе текущей даты и системного времени.

Когда вы нажмете Enter, вам будет предложено ввести команды. Вы можете ввести столько, сколько хотите. Введите Ctrl + D, чтобы сохранить и выйти.

Позвольте нам показать это вам с примерами.

Пример 1. Введите время/дату, используя естественный язык

У вас есть много разных вариантов ввода времени. В отличие от crontab с его довольно сложной системой, основанной на звездочках, «at» распознает «человеческий» ввод более эффективно.

Есть много человеческих подобных выражений, которые могут быть поняты с помощью программного обеспечения. Многие из них зависят от региона. Он может распознавать такие распространенные выражения, как «полночь» или «полдень». Он также может различать AM и PM. Кроме того, он может распознавать различные форматы для дней и дат, включая сокращения.

Он также может использовать выражение «сейчас». Вы можете просто ввести команду, как показано ниже, и она будет запущена через 5 минут.

Скорее всего, вы можете игнорировать предупреждение о bin /sh . Это может вызвать головную боль, если вы используете другую оболочку . Подавляющее большинство дистрибутивов Linux поставляются с bash, поскольку системная оболочка обозначается как «sh» … Это долгая история.

Итак, прошло около минуты, верно? Проверьте каталог для нового файла.

У вас должен быть файл с именем ‘message.txt’, содержащий наш текст.

Выглядит хорошо, но правильно ли он запечатлел наше сообщение? Давайте посмотрим содержимое файла :

Пример 2. Использование указанного времени/даты

Для своей первой работы вы использовали «относительное» время «now + [time]». Это очень простой способ составить график работы, но вам может потребоваться конкретнее.

На этот раз давайте наметим 2 задания в разное время.

Вы можете использовать файл message.txt (созданный в предыдущем примере) для демонстрации. Каждое задание заменит содержимое файла.

Вы можете проверить текущее время в вашей системе Linux с помощью команды date.

Настройте первую работу на определенное время (через 5 минут):

Настройте второе задание на определенное время (через 10 минут):

Пример 3. Просмотр всех заданий в очереди с помощью atq

В любое время вы можете проверить запланированные задания с помощью команды atq. В нем будут перечислены все текущие запланированные задания для пользователя, вошедшего в систему. Чтобы просмотреть все задания в системе, вам может потребоваться использование повышенных привилегий.

Каждое задание идентифицируется по идентификатору задания, назначенному времени и связанному пользователю.

Вы также можете просмотреть содержимое запланированного задания с опцией -c:

Пример 4. Удаление запланированного задания с помощью atrm

Если вы решите отменить задание до его выполнения, это можно сделать, набрав команду с соответствующим идентификатором задания (который можно получить с помощью команды atq).

Как видите, задание 11 было удалено из очереди.

Пример 5: использование файла для команды at

Возможно, у вас есть набор сценариев, которые вы хотите выполнять нерегулярно, и cron не подходит. Вы можете ввести несколько заданий без использования стандартного ввода.

Давайте представим сценарий, в котором отдел кадров запрашивает документацию для компьютерной деятельности сотрудника, который, по их мнению, нарушает политику работы. Возможно, вы захотите, чтобы определенные журналы активности или другая историческая информация создавали для вас отчет в указанное время.

Вы можете сэкономить время, перечислив необходимые сценарии в текстовом файле, выполнив их с помощью at.

Вы поняли идею. Итак, теперь вы можете добавить -f к команде ‘at’ и включить имя файла после:

Пример 6. Запуск задания, когда загрузка процессора падает ниже порогового значения.

Пакетные задания будут выполняться, когда средняя загрузка ЦП по умолчанию опустится ниже 1,5.

Метод ввода пакетных заданий идентичен «at», за исключением того, что ему не нужно указывать время.

Если вы хотите изменить порог загрузки, вы можете сделать это с помощью следующей команды:

Где n – это порог загрузки, который вы хотите выбрать. Страница man рекомендует вам изменить его на значение выше n-1, где n – это количество процессоров в вашей системе .

Вывод

Спасибо за прочтение. Мы надеемся, что ваше понимание команды улучшилось. Если у вас есть какие-либо вопросы или вы хотите поделиться тем, как вы используете эту команду, сообщите нам! Оставьте комментарий ниже.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

  • Какой пароль по умолчанию kali linux
  • Какой лучше linux для игр
  • Какой командой можно посмотреть содержимое директории в linux
  • Какой дистрибутив лучше linux
  • Какой дистрибутив linux поставить на ноутбук