каким образом в среде unix linux можно запускать задачи по расписанию

ИТ База знаний

Полезно

— Онлайн генератор устойчивых паролей

— Онлайн калькулятор подсетей

— Руководство администратора FreePBX на русском языке

— Руководство администратора Cisco UCM/CME на русском языке

— Руководство администратора по Linux/Unix

Навигация

Серверные решения

Телефония

FreePBX и Asterisk

Настройка программных телефонов

Корпоративные сети

Протоколы и стандарты

Время планировать задачи

Онлайн курс по Linux

Мы собрали концентрат самых востребованных знаний, которые позволят тебе начать карьеру администратора Linux, расширить текущие знания и сделать уверенный шаг к DevOps

Например, вы можете установить задание cron для автоматизации повторяющихся задач, таких как резервное копирование баз данных или данных, обновление системы последними обновлениями безопасности, проверка использования дискового пространства, отправка электронных писем, перезагрузка сервера и так далее. В некоторых приложениях, таких как Drupal или Magento, для выполнения определенных задач требуются задания cron.

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

Про Linux за 5 минут

Что такое файл Crontab

Crontab (таблица cron) представляет собой текстовый файл, который определяет расписание заданий cron. Существует два типа файлов crontab. Общесистемные файлы crontab и отдельные пользовательские файлы crontab.

/etc/crontab и файлы в каталоге /etc/cron.d являются общесистемными файлами crontab, которые могут редактировать только системные администраторы.

В большинстве дистрибутивов Linux вы также можете помещать скрипты в каталоги /etc/cron. , и скрипты будут выполняться каждый час/день/неделю/месяц.

Синтаксис Crontab и операторы

Каждая строка в пользовательском файле crontab содержит шесть полей, разделенных пробелом, за которым следует команда для запуска.

Первые пять полей могут содержать одно или несколько значений, разделенных запятой или диапазон значений, разделенных дефисом.

Общесистемные файлы Crontab

Предопределенные макросы

Существует несколько специальных макросов расписания Cron, используемых для определения общих интервалов. Вы можете использовать эти ярлыки вместо указания даты в пять столбцов.

Команда Crontab

Команда crontab позволяет установить или открыть файл crontab для редактирования. Вы можете использовать команду crontab для просмотра, добавления, удаления или изменения заданий cron, используя следующие параметры:

Переменные Crontab

Демон cron автоматически устанавливает несколько переменных окружения.

Ограничения Crontab

Примеры Cron заданий

Ниже приведены некоторые примеры заданий cron, которые покажут вам, как запланировать выполнение задачи на разные периоды времени.

Источник

Для запуска задач по расписанию в Unix традиционно используется демон crond. Эта программа при старте читает пользовательские файлы расписаний из каталога /var/spool/cron/ и общесистемное расписание, хранящееся в файле /etc/crontab и файлах, расположенных в каталоге /etc/cron.d/. Общесистемное расписание отличается от пользовательского тем, что каждая его запись содержит поле с идентификатором пользователя, от имени которого выполняется задание.

После того, как расписания загружены в оперативную память, crond ежеминутно проверяет наличие записи в расписании, соответствующей текущему времени, и, если такая найдена, запускает указанную команду от имени указанного пользователя. Вывод команды (stdout и stderr) перехватывается и отправляется по почте, указанной в расписании. По умолчанию почта при выполнении пользовательского расписания отправляется локальному пользователю, а при выполнении общесистемного расписания – root’у.

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

Формат расписания

Формат общесистемного расписания

Формат пользовательского расписания

mm hh DD MM DW – время выполнения в формате: минута час деньмесяца месяц деньнедели. Любое поле может быть записано следующим образом:

Месяц и день_недели задаются номером или первыми тремя буквами названия.

Переменные окружения, которые влияют на выполнение команды:

Редактирование личного расписания

Пример личного расписания

Одноразовое выполнение действий по расписанию – at

Для однократного запуска команды в указанное время используется демон atd, задания для которого формируются командой at. Команда вводится со стандартного ввода или читается из файла. Время задаётся в различных форматах, например 16:00 31.12.2014 или «now +3 hours» (minutes, hours, days)

Сервис anacron

Сервис anacron изначально придуман для персональных компьютеров, которые могут быть выключены в тот момент, когда crond должен был запустить очередную команду. Если anacron обнаруживает, что ежедневная, еженедельная или ежемесячная команда не была выполнена, то он осуществляет её запуск. Конфигурация anacron хранится в /etc/anacrontab в формате:

period delay job-identifier command

где
period – периодичность выполнения команды в днях
delay – если за указанный период команда не выполнялась, то делается задержка delay минут и запускается команда
job-identifier – произвольная текстовая строка для записи в лог-файлы
command – выполняемая команда

Типичный файл /etc/anacrontab (run-parts – выполнить все файлы в каталоге):

В результате переноса долгопериодных действий в anacron, в CentOS 6 существенно изменилось содержание /etc/crontab

CentOS 5

/etc/crontab:

CentOS 6

/etc/crontab в CentOS 6 пуст

Источник

Скрипты и планировщик задач в ОС Linux

В данном посте обсуждаются базовые принципы написания скриптов и работа планировщика заданий в Oracle Linux. Рассматриваются следующие вопросы:

1. Скрипты в ОС Linux

Скрипты в ОС на базе Linux – это набор команд, записанных в файл. Это делается с целью быстрого и удобного вызова последовательности этих команд. Скрипты могут выполнять самые разные задачи – от автоматизации рутинных действий системного администратора до реализации сложных алгоритмов для ИТ инфраструктуры. При этом результаты работы команд могут служить входными данными для других задач (команд).

Для того, чтобы превратить файл с набором команд в скрипт, понадобятся две вещи. Во-первых, в первой строке пустого файла необходимо прописать путь к командной оболочке, которая будет исполнять данный файл. В большинстве дистрибутивов Linux данной оболочкой является Bash, и соответственно первой строкой будет #!/bin/bash. В других строках символ решетки используется для обозначения комментариев, которые не будут обработаны оболочкой. Однако, первая строка — это особый случай, здесь решетка, за которой следует восклицательный знак (эту последовательность называют шебанг) и путь /bin/bash, указывают системе что данный скрипт создан именно для оболочки bash. Во вторых, чтобы скрипт запустить как исполняемый файл, ему необходимо дать права на исполнение, иначе, попытка его запуска даст ошибку Permission denied.

Пример ошибки, когда запускается неисполняемый файл:

Права на исполнение даются командой chmod. Например,

chmod +x filename.sh

Данная команда дает всем пользователям операционной системы право на запуск файла с именем filename.sh

Право на запуск того же файла только владельцу можно дать следующей командой: chmod u+x filename.sh.

Ниже рассматривается пример написания простейшего скрипта, копирующего все файлы из папки /home/rustam/Documents в папку /tmp/backup.

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

Исполнение отдельных команд без хранения результатов работы ограничивают их возможности.

Существуют два типа переменных, которые используются в bash-скриптах:

Используются при необходимости работы с системными данными в командах оболочки. Например, требуется вывести домашнюю директорию текущего пользователя. Список переменных для среды конкретного пользователя выдается командой env.

В дополнение к переменным среды, bash-скрипты позволяют задавать и использовать в скрипте свои собственные переменные. Подобные переменные хранят значение до тех пор, пока не завершится выполнение сценария. Как и в случае с системными переменными, к пользовательским переменным обращаются используя знак доллара:

Дополним соответствующим образом скрипт, написанный ранее – добавляется переменная для хранения пути к папке, в которую осуществляется копирование.

2. Что такое планировщик заданий. Работа сервиса cron.

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

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

Как и большинство других сервисов Linux, cron запускается при старте системы и работает в фоновом режиме. Его основная задача – выполнять требуемые процессы в заданное время. Существует несколько конфигурационных файлов, из которых берется информация о том, что и когда нужно выполнять. Cron открывает файл /etc/crontab, в котором указываются необходимые данные.

Для настройки времени, даты и интервала выполнения задания, используется специальный синтаксис файла cron и специальная команда. Не рекомендуется непосредственно редактировать файл /etc/crontab. Вместо этого используется команда crontab. Ниже запускается команда crontab с ключом –e для редактирования файла

Файлы crontab, используемые для управления работой планировщика, располагаются в каталоге /etc/cron.d/. Кроме того, в каталогах /etc/cron.daily/, /etc/cron.weekly/ и /etc/cron.monthly/ размещаются автоматически запускаемые программы (ежедневно, еженедельно или ежемесячно).

Вывод содержимого текущего файла позволяет команда:

Таблица crontab состоит из 6 колонок, которые разделяются пробелами или табуляторами. Первые пять колонок отвечают за время выполнения, соответственно, минута, час, день месяца, месяц, день недели. В них может находиться: число, список чисел (1,2,3), диапазон чисел (1-3), символы * или /. Все остальные символы в строке интерпретируются как выполняемая команда с ее параметрами – можно указать как саму команду (например, echo “Доброе утро”), так и путь к исполняемому скрипту.

Как запускать скрипты через cron

Скрипты запускаются через cron, указанием команды либо пути к скрипту в последней колонке.

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

Пример запуска ранее созданного скрипта filename.sh, который копирует файлы каждый день в 23:00:

или копирует файлы каждые 5 минут:

3. Примеры

Ниже приведены примеры настройки и работы cron:

0 17 * * 1-5 echo “Рабочий день закончен – эта надпись выводится в 17:00 с понедельника по пятницу”

15 6 * * sun echo “Выполняется в 6:15 в воскресенье”

30 12,13 * * 1,3 echo “Эта надпись выводится в понедельник и среду в 12:30 и 13:30”

Источник

Записки IT специалиста

Технический блог специалистов ООО»Интерфейс»

В наших материалах посвященных Ubuntu Server время от времени затрагивается вопрос выполнения каких либо задач по расписанию. Чтобы не объяснять каждый раз одно и тоже мы решили создать данный материал, который должен помочь системным администраторам освоить и эффективно использовать планировщик задач в Linux.

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

Чтобы создать или изменить пользовательское расписание наберите команду:

При первом запуске утилита предложит выбрать редактор, мы рекомендуем выбирать mcedit (требует установленного mc), либо другой редактор, с которым вы умеете работать.

Формат строк расписания имеет вид:

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

Рассмотрим следующий пример записи:

Она означает что каждый второй час с 8 до 19 (8, 10,12,14,16) по понедельникам запускать скрипт test в домашнем каталоге Иванова.

Сразу хотим предостеречь вас от распространенной ошибки, при указании периодического исполнения все даты должны быть указаны явно, звездочка обозначает полный диапазон значений, а не их отсутствие. Например если вам требуется исполнять некий скрипт каждый час с 10 до 15 неправильно будет:

Данная строка приведет к запуску скрипта каждую минуту в диапазоне с 10 до 15 часов. Правильно будет:

Данная запись позволит запускать скрипт в начале каждого часа указанного диапазона.

Кроме даты можно использовать ряд специальных строк:

Так для ежедневного исполнения нашего скрипта каждую полночь можно написать:

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

Пример такой записи:

Согласно которой в 19:00 с понедельника по пятницу будет запускаться скрипт /etc/backup от имени пользователя root.

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

Как видим cron достаточно прост в использовании, но в тоже время предоставляет богатые возможности по настройке расписаний в Ubuntu Server. Надеемся данная статья поможет администраторам освоить данный инструмент.

Помогла статья? Поддержи автора и новые статьи будут выходить чаще:

Или подпишись на наш Телеграм-канал:

Источник

Основы Linux. Часть 18 (запуск задач по расписанию)

С возвращением, мои хакеры!

В предыдущих статьях мы учились проводить глобальный поиск по Сети на предмет уязвимых серверов, а также писать простые скрипты на BASH и Perl для выполнения различных исследовательских задач. А совсем свежее руководство было посвящено сканированию серверов на поиск уязвимости для Heartbleed.

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

К счастью Linux имеет встроенную функцию, которая позволяет выполнять такие задания по расписанию. Она называется cron или crond для демона, который запускает эти службы (демон — это просто процесс, работающий в фоновом режиме).

Как работает Cron в Linux

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

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

Давайте посмотрим, как это работает и как это можно использовать для хакерских задач.

Шаг 1. Находим Crontab

Cron — это одна из тех функций, которая почти идентична для всех дистрибутивов Linux, поэтому то, что вы узнаете здесь, можно будет использовать в Ubuntu, Red Hat, Suse, Mint, Slackware, CentOS и других. Cron является частью семейства Linux/UNIX еще с 70-х годов, поэтому он проверен, широко используется и считается надежным инструментом, поскольку на деле доказал свою ценность.

Как и многие другие вещи в Linux, функция cron управляется конфигурационным файлом, который представляет собой обычный текстовый файл. В многопользовательской среде каждый пользователь имеет свой собственный конфигурационный файл для cron, но здесь мы сосредоточимся только на пользователе root в Kali.

Конфигурационный файл cron называется crontab или «cron table» («таблица cron»). Чтобы найти файл crontab, введите в консоли:

На скриншоте выше видно, что он находится в директории /etc, впрочем, как любой другой конфигурационный файл в Linux (есть исключения, конечно).

Шаг 2. Открываем crontab

Давайте откроем его и посмотрим что же у него внутри. Это делается с помощью любого текстового редактора, но в этой статье мы будем использовать графический текстовый редактор, устанавливаемый в Kali по умолчанию — Leafpad. Введите в консоли:

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

Шаг 3: Анатомия Crontab

Давайте разложим crontab на части. Как видно на скриншоте выше, crontab начинается с пяти прокомментированных строк, которые начинаются с символа решетки (#). Эти строки — просто объяснения и примечания, они не читаются и не выполняются самой системой.

После этих строк вы видите такую пару строк:

Первая из них определяет ту оболочку (shell), которая будет использована для запуска заданий. В нашем случае мы назначаем оболочку BASH командой, указанной после знака равенства. Если вы хотите использовать другую оболочку, вы можете определить ее явно в этой строке:

Вторая строка задает переменную PATH. Переменная PATH является переменной среды (в Windows тоже такое есть), которая сообщает системе, где ей искать команды, используемые в задании cron. Как правило, это файлы в директориях bin и sbin (бинарные, т.е. исполняемые файлы), которые содержат системные команды, используемые в Linux (ls, echo, ps, cd и другие).

Здесь значением по умолчанию является такая строка:

Это значит, что демон cron будет искать в этих директориях те команды, которые ему нужны для выполнения запланированных вами заданий. Если вы используете команду или файл, которой нет в этих директориях, то просто отредактируйте эту строку и добавьте нужную директорию после ввода двоеточия (:). Например:

Шаг 4. Определение задач по расписанию

Теперь идет самое «мясо» файла crontab. В третьем разделе мы как раз и планируем выполнение тех заданий, которые нужно запускать.

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

Поля файла crontab следующие:

Звездочка (*) представляет собой слово «любой», поэтому это может быть любой день, час или минута.

Использование Cron для поиска уязвимых серверов

Теперь давайте представим, что мы хотим просканировать весь Земной шар на предмет IP-адресов, уязвимых для Heartbleed.

Сообщается, есть больше 300 000 серверов, которые по-прежнему не пропатчены от этой уязвимости. Это очень большое число, при более чем 2 миллиардов IP-адресов по всей планете. Это количество означает, что уязвимым к этой атаке будет только 1 из 10 000 IP-адресов. Это также значит, что нам нужно настроить сканер таким образом, чтобы он повторял поиск по тысячам IP-адресов, для того, чтобы найти хотя бы один уязвимый сервер.

Это идеальная задача для работы с cron!

Шаг 5. Определение расписания для нашего Heartbleed сканера

Мы можем запланировать сканирование, чтобы оно выполнялось каждую ночь, пока мы спим, в надежде на то, что каждое утро, проснувшись, узнаем о новой потенциальной жертве!

Давайте снова откроем crontab в любом текстовом редакторе.

Теперь нам нужно добавить только одну строку, чтобы запускать наш nmap-сканер каждую неделю в 2:05 ночи. Просто добавьте эту строку в ваш файл crontab:

Теперь сохраните и закройте этот файл.

Это запланирует запуск нашего nmap-сканера Heartbleed по понедельникам, вторникам, средам, четвергам и пятницам ровно в 2:05 ночи для поиска уязвимости Heartbleed по 65 536 IP-адресам.

Осталось проработать всего 2 миллиарда адресов.

Источник

Понравилась статья? Поделиться с друзьями:

Не пропустите наши новые статьи:

  • каким названием нельзя назвать папку в виндовс
  • каким именем нельзя назвать папку в windows
  • каким должен быть файл hosts в windows 10
  • каким документом зарегистрировать исходящую счет фактуру в программе 1с
  • Каким документом в программе 1с бухгалтерия осуществляется выкуп акций

  • Операционные системы и программное обеспечение
    0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest
    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии