Как я полностью заставляю cronjob замолчать к/dev/null/?

Настройки открытой системы

  • выберите Клавиатуру,
  • выберите Вкладку Ярлыков,
  • последний объект является 'Пользовательскими Ярлыками'
  • нажмите [+]

  • введите Имя: Терминал

  • в Команду: введите 'терминал гнома' (без кавычек)
  • нажмите Apply
  • нажмите в недавно созданной строке на 'Отключенный'
  • нажмите сочетание клавиш, которое Вы хотите использовать для терминала (например, Alt-Home).

Вы установлены.

75
22.07.2018, 05:54
4 ответа

Сделайте строку этим:

* * * * *       root    /usr/local/sbin/mycommand.sh > /dev/null 2>&1

Это получит и STDOUT (1) и STDERR (2) и отправит их в /dev/null.

Адрес электронной почты

Можно также отключить электронную почту путем установки и затем сброса MAILTO="" который отключит отправку любых электронных писем.

Пример

MAILTO=""
* * * * *       root    /usr/local/sbin/mycommand.sh > /dev/null 2>&1

MAILTO="admin@somedom.com"
 * * * * *      root    /usr/local/sbin/myothercommand.sh

Дополнительный обмен сообщениями

Часто времена Вы будете вкладывать следующие типы сообщений /var/log/syslog:

Nov 11 08:17:01 manny CRON[28381]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)

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

Если они являются очень раздражающими Вам, можно всегда направлять их к альтернативному файлу журнала для получения их из Вашего /var/log/syslog файл, через /etc/syslog.conf конфигурационный файл для syslog.

120
27.01.2020, 19:31
  • 1
    @rubo77 - можно ли показать пример? Я должен был бы видеть то, что не работает с этим. Поиск с помощью Google поднимает это как ответ: cyberciti.biz/faq/disable-the-mail-alert-by-crontab-command –  slm♦ 11.11.2013, 07:56
  • 2
    Это работает на весь вывод и электронные письма, но он все еще генерирует строку для каждого вызова крона в/var/log/syslog –  rubo77 11.11.2013, 08:02
  • 3
    @rubo77 - это - то, о чем я думал Вы сила о выяснении. Вы не можете остановить те сообщения, они сгенерированы crond демоном самостоятельно. –  slm♦ 11.11.2013, 08:04
  • 4
    @rubo77 - Я знаю об изменении /etc/syslog.conf, Я едва считал бы это альтернативой. Это просто изменит файл, в который выводятся журналы, или можно полностью отключить сообщения крона все вместе. Нет способа сделать то, что Вы хотите. –  slm♦ 11.11.2013, 08:11
  • 5
    @rubo77 - единственный способ, которым Вы сможете сделать то, что Вы хотите, состоит в том при помещении a grep -v ... после вызова crond. –  slm♦ 11.11.2013, 08:13

имейте сценарий, который должен выполняться каждую минуту. Проблема состоит в том, что крон регистрируется к/var/log/syslog каждый раз, когда он выполняется. Я заканчиваю тем, что видел, повторил сообщение, это был ececuted много раз в/var/log/syslog

Начиная ни с чего Вы делаете, кажется, останавливает это, это стоит спросить: каков точно этот сценарий и каково точно сообщение, которое Вы видите в системном журнале?

Если предложение slm не работало, это вызвано тем, что что-то регистрируется к системному журналу непосредственно - или крон, как, кажется, подразумевается в некоторых Ваших комментариях, или иначе процесс, выполненный кроном. Сообщения, отправленные в системный журнал, не прибывают из stdin или stderr, таким образом, 2>&1&> не поможет.

Мог бы быть способ настроить поведение рассматриваемого приложения, кроме мы не знаем, каково это.

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

Моя общая точка то, что, если Вы не хотите перенаправлять/фильтровать сообщения, потому что "это перенаправит все сообщения", затем можно совершенствовать метод фильтрации. Поток отказа сервера Вы связались только с фильтрацией упоминаний по средству (*.cron) - но можно настроить более специализированные фильтры, чем это.


Debian и Ubuntu оба имеют rsyslog в наличии. На debian 5 + это - системный журнал по умолчанию, на человечности это - опция, таким образом, необходимо будет установить его. Для создания фильтра, который предназначается для некоторого определенного содержания поместите эту близость вершина (т.е. перед любыми другими правилами, но после общей конфигурации, загрузки модуля, и т.д.) /etc/rsyslog.conf. Лучший способ сделать это не должно редактировать rsyslog.conf самостоятельно, но создать файл в /etc/rsyslog.conf.d/ каталог, с именем, запускающимся с двух цифр, которые являются меньше чем 50, т.е. /etc/rsyslog.conf.d/15-my-filter.conf. Можно поместить там что-то вроде этого:

:msg, contains, "/usr/bin/w3m -no-cookie" /dev/null

Это отправит сообщение в /dev/null (или отдельный журнал, если Вы предпочитаете). Однако сообщение будет все еще передано через последующие правила, которые отправляют его в /var/log/syslog. Предотвратить это:

& stop

Сразу после той другой строки. Это выбрасывает что-либо, что соответствовало предыдущему правилу. Или, поскольку одна строка постановляет, что можно просто добавить stop в конец той строки правила.

Необходимо перезапустить rsyslogd после изменения конфигурации, (например, в systemd системах systemctl restart rsyslog):

kill -HUP $(cat /var/run/rsyslogd.pid)

ПОНУКНИТЕ заставляет демона перезапускать себя.

10
27.01.2020, 19:31
  • 1
    Для rsyslog ~ теперь удерживается от использования и должен быть заменен stop. Также положение в rsyslogd.conf вопросы файла. Таким образом для rsyslog я просто использовал бы :msg, contains, "/usr/bin/w3m -no-cookie" stop. И затем перезапуск sudo systemctl restart rsyslog. –  Frank Breitling 14.03.2017, 01:19

Перенаправление к /dev/null скрывает вывод от команды. Если Вы не делаете этого затем, крон отправляет вывод по почте Вам. Вывод от команды никогда не заканчивается в системных журналах (по крайней мере, не выполнением крона).

Это обычно - плохая идея перенаправить вывод к /dev/null, особенно вывод ошибок: если что-то пойдет не так, как надо, то у Вас не будет информации для диагностирования проблемы. Если Вы не хотите получать почту, перенаправьте к файлу журнала.

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

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

2
27.01.2020, 19:31

Изменение /etc/default/cron

# Or, to log standard messages, plus jobs with exit status != 0:
# EXTRA_OPTS='-L 5'
#
# For quick reference, the currently available log levels are:
#   0   no logging (errors are logged regardless)
#   1   log start of jobs
#   2   log end of jobs
#   4   log jobs with exit status != 0
#   8   log the process identifier of child process (in all logs)
#
EXTRA_OPTS="-L 0"

По умолчанию строка EXTRA_OPTS имеет значение "

5
27.01.2020, 19:31

Теги

Похожие вопросы