Настройки открытой системы
нажмите [+]
введите Имя: Терминал
Вы установлены.
Сделайте строку этим:
* * * * * 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
.
имейте сценарий, который должен выполняться каждую минуту. Проблема состоит в том, что крон регистрируется к/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)
ПОНУКНИТЕ заставляет демона перезапускать себя.
~
теперь удерживается от использования и должен быть заменен 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 (который может или не может быть значением по умолчанию в Вашей системе) как демон системного журнала. См. ответ лютика золотистого для того, как отфильтровать эту конкретную команду.
Изменение /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
имеет значение "
/etc/syslog.conf
, Я едва считал бы это альтернативой. Это просто изменит файл, в который выводятся журналы, или можно полностью отключить сообщения крона все вместе. Нет способа сделать то, что Вы хотите. – slm♦ 11.11.2013, 08:11grep -v ...
после вызоваcrond
. – slm♦ 11.11.2013, 08:13