Cron как вывести результат работы

Как я могу просмотреть результаты моей работы cron?

Я вижу много руководств по запуску crontab, но сейчас мне нужно научиться

  1. Найти файлы журналов о работе cron
  2. Настройте то, что регистрируется

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

Например, чтобы перенаправить вывод ошибок some_job.sh в some_job.err и выбросить стандартный вывод (т.е. отправить его /dev/null ), добавьте следующее перенаправление в ваш crontab

или отправить его вам по почте (если mail есть)

Большинство демонов cron на платформах, с которыми я работал, автоматически отправляют по электронной почте stdout / stderr пользовательских заданий cron пользователю, из чьего crontab пришло задание. Я забыл, что происходит с общесистемными (не зависящие от пользователя задания cron из / etc / crontab). Дело в том, что люди больше не всегда устанавливают демон почтовой программы (то есть агента передачи почты (MTA), такого как sendmail, qmail или postfix) в большинстве Unix-подобных ОС. Таким образом, выходные письма хрон просто умереть в локальную папку почты золотника где — то , если они даже получить , что далеко. Поэтому одним из ответов может быть только запуск вашего почтового демона, и, возможно, убедитесь, что у вас есть файл

Читайте также:  Как чистить зубы если они желтые

/ .forward для пересылки вашей локальной почты на вашу «реальную» учетную запись электронной почты.

Если вы хотите, чтобы ваши задания записывались в определенные файлы журналов, вы можете использовать стандартное перенаправление вывода, как предложено @honk, или, предположив, что ваше задание cron является сценарием оболочки, вы можете использовать свой скрипт call logger (1) или syslog (1) или любой другой инструмент командной строки, который ваша ОС предоставляет для отправки произвольных сообщений в системный журнал. Затем вы могли бы использовать встроенные методы вашей ОС для настройки того, какие типы сообщений будут регистрироваться, где, возможно, путем редактирования /etc/syslog.conf.

Большинство моих заданий cron вызывают скрипты bash, которые я написал специально для того, чтобы их запускал cron по определенной причине. В них, особенно когда я изначально пишу и отлаживаю их, мне нравится использовать bash «set -vx», чтобы заставить нерасширенную и развернутую форму каждой строки сценария сценария записываться в stdout до его выполнения. Обратите внимание, что сценарии оболочки, запускаемые из cron, считаются неинтерактивными, неинтерактивными оболочками, поэтому ваши стандартные сценарии запуска оболочки, такие как .bashrc и .profile, не запускаются. Если вы используете bash и хотите, чтобы bash запускал скрипт запуска, вы должны определить переменную окружения «BASH_ENV = / path / to / my / startup / script» в вашем crontab перед строкой, в которой вы определяете задание.

Источник

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

Курс по Asterisk

Полезно

— Узнать IP — адрес компьютера в интернете

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

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

— Калькулятор инсталляции IP — АТС Asterisk

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

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

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

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

Телефония

FreePBX и Asterisk

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

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

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

Планировщик CRON — запуск программ по расписанию

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

Cron — это демон планирования, который выполняет задачи с заданными интервалами. Эти задачи называются заданиями cron и в основном используются для автоматизации обслуживания или администрирования системы.

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

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

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

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

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

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

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

    Файлы crontab пользователей именуются в соответствии с именем пользователя, и их расположение зависит от операционной системы. В дистрибутивах на основе Red Hat, таких как CentOS, файлы crontab хранятся в каталоге /var/spool/cron , а файлы Debian и Ubuntu хранятся в каталоге /var/spool/cron/crontabs .

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

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

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

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

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

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

    • * — оператор звездочки означает любое значение или всегда. Если в поле «Час» имеется символ звездочки, это означает, что задание будет выполняться каждый час.
    • , — оператор запятой позволяет указать список значений для повторения. Например, если у вас есть 1,3,5 в поле Час, задание будет выполняться в 1, 3 и 5 часов утра.
    • — — оператор дефиса позволяет указать диапазон значений. Если в поле «День недели» указано значение 1–5, задание будет выполняться каждый рабочий день (с понедельника по пятницу).
    • / — оператор косой черты позволяет указать значения, которые будут повторяться в течение определенного интервала между ними. Например, если в поле «Час» указано */4 , это означает, что действие будет выполняться каждые четыре часа. Это то же самое, что указание 0,4,8,12,16,20. Вместо звездочки перед оператором косой черты можно также использовать диапазон значений, 1-30/10 означает то же, что и 1,11,21.

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

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

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

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

    • @yearly (или @annually ) — запускать задание один раз в год в полночь (12:00) 1 января. Эквивалент 0 0 1 1 * .
    • @monthly — запускать заданное задание один раз в месяц в полночь первого дня месяца. Эквивалент 0 0 1 * * .
    • @weekly — запускать задание раз в неделю в полночь воскресенья. Эквивалент 0 0 * * 0 .
    • @daily — запускать задание один раз в день в полночь. Эквивалент 0 0 * * * .
    • @hourly — запускать заданную задачу один раз в час в начале часа. Эквивалент 0 * * * *.
    • @reboot — Запустить указанное задание при запуске системы (время загрузки).

    Команда Crontab

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

    • crontab -e — отредактировать файл crontab или создать его, если он еще не существует.
    • crontab -l — Показать содержимое файла crontab.
    • crontab -r — удалить текущий файл crontab.
    • crontab -i — Удалить текущий файл crontab с запросом перед удалением.
    • crontab -u — Изменить другой файл crontab. Требуются права системного администратора.

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

    Переменные Crontab

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

    • Путь по умолчанию установлен в PATH=/usr/bin:/bin . Если вызываемая вами команда присутствует в указанном пути cron, вы можете использовать абсолютный путь к команде или изменить переменную cron $PATH . Вы не можете неявно добавить :$PATH , как если бы вы использовали обычный скрипт.
    • Оболочка по умолчанию установлена в /bin/sh . Вы можете установить другую оболочку, изменив переменную SHELL .
    • Cron вызывает команду из домашнего каталога пользователя. Переменная HOME может быть переопределена настройками в crontab.
    • Уведомление по электронной почте отправляется владельцу crontab. Чтобы перезаписать поведение по умолчанию, вы можете использовать переменную среды MAILTO со списком (через запятую) всех адресов электронной почты, которые вы хотите получать по электронной почте. Если MAILTO определено, но пусто (MAILTO = «») , письмо не отправляется.

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

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

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

    Если файл /etc/cron.allow существует, только пользователи, перечисленные в этом файле, могут использовать команду crontab . Если ни один файл не существует, только пользователи с правами администратора могут использовать команду crontab .

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

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

    • Запускать команду в 15:00 каждый день с понедельника по пятницу:
    • Запускать скрипт каждые 5 минут и перенаправлять стандартный вывод на dev null , на указанный адрес электронной почты будет отправлена только стандартная ошибка:
    • Выполнять две команды каждый понедельник в 3 часа дня (используйте оператор && между командами):
    • Запускать PHP-скрипт каждые 2 минуты и записывать результат в файл:
    • Запускать сценарий каждый день, каждый час, каждый час, с 8:00 до 16:00:
    • Запускать сценарий в первый понедельник каждого месяца в 7 часов утра.
    • Запускать сценарий в 21:15, 1 и 15 числа каждого месяца:
    • Установить пользовательские переменные HOME , PATH , SHELL и MAILTO и запускать команду каждую минуту.

    Мини — курс по виртуализации

    Знакомство с VMware vSphere 7 и технологией виртуализации в авторском мини — курсе от Михаила Якобсена

    Источник

    cron и anacron

    Конфигурирование crond

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

    По-умолчанию демон crond запускается вместе с системой. Тем не менее статус можно проверить командой:

    Временные интервалы cron

    При планировании сервисов через cron вам нужно указать, когда именно сервисы должны быть запущены. В конфигурации crontab (которая более подробно объясняется в следующем разделе) вы используете строку времени, чтобы указать, когда следует запускать задачи.

    Таблица показывает используемые поля времени и даты (в указанном порядке).

    Значение

    1 — 31 Месяц

    1 — 12 (или имена месяцев) День недели

    0 — 7 (или имена недели). Где, 0 или 7 — воскресенье

    Если вместо значения указать *, то значение будет любым.

    Примеры cron

    в любую минуту с 11 до 11:59 0 11 * * 1-5

    с 11 часов, каждые рабочие дни 0 7-18 * * 1-5

    каждый час в рабочие дни на 1 час 0 */2 2 12 5

    каждые 2 часа на час 2 декабря и каждую пятницу

    Нет необходимости запоминать всё это. Достаточно посмотреть все возможные примеры в man 5 crontab.

    Конфигурационный файл cron

    Главный конфигурационный файл cron находится в /etc/crontab, но его НЕ надо редактировать. Вместо этого редактируйте:

    • cron-файлы в /etc/cron.d (сюда кидайте все задачи, которые должны выполняться от root);
    • Скрипты в /etc/cron.hourly, cron.daily, cron.weekly и cron.monthly;
    • Пользовательские скрипты, созданные с помощью crontab -e или если вы залогинились под root, то crontab -e -u имя_пользователя.

    Когда скрипт будет создан и сохранён, он активируется автоматически.

    Пример, как выглядит задача в каталоге /etc/cron.d
    Если вы хотите поэкспериментировать с тем, как работает cron, вы должны выделить достаточно времени для этого. Служба crond считывает свою конфигурацию каждую минуту, после чего новые задания могут быть запланированы для выполнения на следующую минуту.

    Для начала, задания cron могут быть запущены для определенных пользователей. Чтобы создать пользовательское задание cron, введите crontab -e после входа в систему от имени этого пользователя или от имени root crontab -e -u username.

    Когда вы используете crontab -e, редактор vi открывается и создает временный файл. После того, как вы отредактируете конфигурацию cron, временный файл будет перемещен в его окончательное местоположение в каталоге /var/spool/ cron. В этом каталоге файл создается для каждого пользователя. Эти файлы никогда не должны редактироваться напрямую! Когда файл сохраняется crontab -e, он активируется автоматически.

    Если вы хотите добавить задания cron, которые не привязаны к конкретной учетной записи пользователя (и которые по этой причине по умолчанию будут выполняться как root, если не указано иное), добавляйте их в каталог /etc/cron.d. Просто поместите файл в этот каталог (точное имя не имеет значения) и убедитесь, что он соответствует синтаксису типичного задания cron. В листинге 1 вы можете увидеть пример файла конфигурации /etc/cron.d/unbound-anchor (который был вставлен в каталог /etc/cron.d после установки сервера DNS).

    Листинг 1
    Этот пример файла содержит три элемента. Сначала указывается время, когда команда запускается в 3:10 утра первого числа каждого месяца. Затем конфигурация указывает, что команда должна быть запущена пользователем unbound. Последняя часть имеет фактическую команду, которую нужно запустить с некоторыми аргументами, специфичными для этой команды, и показать, как эту команду следует использовать.

    Последний способ планирования заданий cron — через следующие каталоги:

    • /etc/cron.hourly
    • /etc/cron.daily
    • /etc/cron.weekly
    • /etc/cron.monthly

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

    Понимание цели anacron

    Чтобы обеспечить регулярное выполнение задания, cron использует сервис anacron. Эта служба обеспечивает запуск ежечасных, ежедневных, еженедельных и ежемесячных заданий cron независимо от того, в какое точное время. Чтобы определить, как это сделать, anacron использует файл /etc/anacrontab. В листинге 2 показано содержимое файла /etc/anacrontab, который используется для указания того, как должны выполняться задания anacrontab.

    Листинг 2
    В /etc/anacrontab выполняемые задания указываются в строках, содержащих три столбца, как показано в листинге 2. В первом столбце указывается частота выполнения задания, выраженная в днях. Во втором столбце указывается, как долго anacron ожидает выполнения задания, а в последней части указывается команда, которая должна быть выполнена.

    Управление доступом к конфигурированию cron

    Пример настройки на выполнение запланированных задач через cron

    1. Зайдите под root. Введите cat /etc/crontab, чтобы получить представление о содержимом файла конфигурации /etc/crontab.

    2. Введите crontab -e. Это открывает интерфейс редактора, который по умолчанию использует vi в качестве редактора. Добавьте следующую строку:
    3. Введите команду :wq! закрыть сеанс редактирования и записать изменения.

    4. Выполните cd /etc/cron.hourly. В этом каталоге создайте файл сценария с именем eachhour, который содержит следующую строку:
    5. Выполните chmod +x eachhour, чтобы сделать скрипт исполняемым.

    6. Теперь переключитесь на каталог /etc/crond.d и в этом каталоге создайте файл с именем eachhour. Скопируйте в файл следующее содержимое:
    7. Сохраните изменения в файле конфигурации и перейдите к следующему разделу. (Для достижения оптимального эффекта выполните последнюю часть этого примера через пару часов.)

    8. Через пару часов введите grep wrote /var/log/messagesи прочитайте записанные сообщения, которые проверяют правильность работы cron.

    Конфигурирование at

    Принимая во внимание, что cron используется для планирования заданий, которые должны выполняться на регулярной основе, служба atd доступна для служб, которые должны выполняться только один раз. На RHEL 7/CentOS 7 служба atd доступна по умолчанию, поэтому все, что нужно сделать, — это планирование заданий.

    Чтобы запустить задание через службу atd, вы должны использовать команду at, а затем время выполнения задания. Это может быть определенное время at 14:00, но это также может быть указание времени, например, at teatime или at noon. После того, как вы введете одну из этих команд, откроется оболочка at. Из этой оболочки вы можете ввести несколько команд, которые будут выполнены в указанное время. После ввода команд используйте Ctrl + D, чтобы выйти из оболочки.

    После планирования заданий с помощью at вы можете использовать команду atq (q как очередь), чтобы получить обзор всех заданий, запланированных на данный момент. Также возможно убрать текущее задание. Для этого используйте команду atrm, за которой необязательно следует номер задания at, которое вы хотите удалить. В примере ниже вы узнаете, как работать с at, чтобы планировать выполнение заданий в определенное время.

    Пример работы с at

    1. Введите systemctl status atd. В строке, которая начинается с Loaded:, эта команда должна показать вам, что служба в данный момент загружена и включена, что означает, что она готова начать получать задания.

    2. Введите at 15:00 (или замените на любое время, близкое ко времени, в которое вы работаете над этим примером).

    3. Введите logger message from at. Используйте Ctrl+D, чтобы закрыть оболочку.

    4. Введите atq, чтобы убедиться, что задание действительно запланировано.

    Источник

  • Оцените статью