Вопрос "(CRON) info (Нет установки MTA, отбрасывание вывода)" ошибка в syslog


У меня новая установка Ubuntu 12.04.1 LTS на несколько серверов.

Я не добавил никаких заданий cron или не редактировал свой crontab на этих серверах, однако примерно в то же время для каждой машины я получаю 75% -ный всплеск процессора и следующую информацию в моем syslog во время всплеска:

CRON[8380]: (CRON) info (No MTA installed, discarding output)

У меня есть моно-комплект, и я запускаю веб-сервер стека служб.

Каков наилучший способ остановить это? Я хотел бы иметь возможность удалить всплеск процессора.


147
2017-11-27 10:25


происхождения


Каждый день в 6:25? Это скрипты из /etc/cron.daily/. У меня есть только одна попытка отправить почту: популярность-конкурс. Посмотрите, хотя ваши скрипты и посмотрите, какой скрипт пытается отправить почту? Это должно сузить его. Затем «chmod 0644 /etc/cron.daily/script-name», чтобы предотвратить выполнение.


ответы:


Linux использует почту для отправки уведомлений пользователю. В большинстве дистрибутивов Linux установлена ​​почтовая служба (включая MTA). Ubuntu этого не делает.

Вы можете установить почтовую службу, например postfix, для решения этой проблемы.

sudo apt-get install postfix

Или вы можете игнорировать его. Я не думаю, что невозможность отправки сообщений cron имеет какое-либо отношение к шипу процессора (это связано с базовым заданием, выполняемым cron). Возможно, было бы безопаснее установить MTA, а затем прочитать сообщения (mutt является хорошим системным почтовым читателем).


139
2018-01-01 08:56



Postfix - хорошая вещь для установки? Какой MTA проще всего использовать? - endolith
postfix является наиболее широко используемым почтовым сервером для Linux, придерживайтесь его - Rápli András
Стоит отметить, что для использования с cron (то есть, если вы не хотите отправлять электронную почту наружу) во время процедуры установки вы должны отвечать только на локальное использование. - steffen


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

sudo crontab -e

и добавить >/dev/null 2>&1 на каждую работу:

* * * * * yourCommand >/dev/null 2>&1

63
2018-04-26 10:27



Проблема с этим подходом заключается в том, что он не объясняет высокую загрузку процессора. Cron явно пытается быть коммуникабельным, и это по сути просто игнорирует выход. Я был бы более склонным обрабатывать вывод, чем отбрасывать его, на всякий случай, когда есть полезная информация об отладке. - Oli♦
Оли, хотя это старый вопрос, я испытываю тот же самый точный вопрос, но он находится на Малиновой ПИ. Я вижу кучу No MTA installed, discarding output сообщение в журнале, и моя программа в конечном итоге перестает работать сама по себе. Я считаю, что это из-за всплеска процессора. Похоже, что все ответы на этот вопрос, похоже, игнорируют это. - ThN
Чтобы сохранить вывод, поместите команду в скрипт, а stdout и stderr - в logger, Например, yourCommand >/dev/null 2>&1 | logger -t mycmd, Это приведет к выводу данных в syslog для безопасного хранения и прекратит жалобы MTA. - CivMeierFan


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

Как я предположил, я побежал:

sudo aptitude install postfix

Я выбрал «Local» во время настройки и после запуска задания cron снова:

sudo tail -f /var/mail/<user>

В моем случае я заменил

<user>

с «root».

Затем я смог увидеть вывод ошибки, относящийся к разрешениям.


42
2017-07-10 14:28



Благодарим вас за дополнительный комментарий о том, как проверить почтовый ящик, чтобы увидеть ошибки с работы! - Stuart Allen


В crontab добавить это как первую строку:

MAILTO=""

Это предотвратит попытку cron отправить электронное письмо.


20
2017-08-27 13:06



Не оставляйте комментарии (#) после MAILTO="" или он не будет работать - SBF


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

sudo crontab -e

то с вашим заданием cron будет выглядеть так.

0 3 * * * /cmd/to/run >> /var/log/somelogfile.log

то вы можете просто загнать журнал и посмотреть, что произошло

sudo tail -f -n 50 /var/log/somelogfile.log

Это то, что я делал на любом сервере, я вижу это сообщение в syslog


19
2018-04-17 19:37



Я сделал это, но в файл не добавлено никаких записей. - pir
Вы уверены, что работа cron работает? - Andrew MacNaughton
Да, системный журнал показывает, что он запускается. - pir
Вам нужно «2> & 1» в конце строки для вывода вывода в stderr в файл. - MattSmith


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

crontab -e

(использование sudo если проблема связана с crontab root) и добавить >> / Некоторые / журнал / файл 2>&1 после каждой команды, вот так:

0 3 * * * CMD  >> / Некоторые / журнал / файл 2> & 1

Если в строке имеется несколько команд, разделены по ;, &&или ||, вы должны сделать выше для каждой команды, например:

0 3 * * * CMD1  >> / Некоторые / журнал / файл 2> & 1; CMD2  >> / Некоторые / журнал / файл 2> & 1

или группировать их, например:

0 3 * * * (CMD1; CMD2)  >> / Некоторые / журнал / файл 2> & 1

Если вы хотите игнорировать stdout и захватывать только stderr, использование > /dev/null 2>> / Некоторые / журнал / файлвместо. Поместите файл журнала туда, где вы хотите - ваш домашний каталог, /var/log, или даже /tmp если вы уверены, что вам не нужно будет его хранить.

Затем просмотрите файл журнала после запуска задания.


14
2017-07-29 02:40





Один побочный эффект добавления /dev/null 2>&1 к команде заданий cron, заключается в том, что она отбросит оба STDERR а также STDOUT (Стандартная ошибка, а также выход). Это прекрасно работает, если вы не хотите получать электронные письма от cron. Но если вы хотите, чтобы ваши ошибки были отправлены вам по электронной почте, используйте >/dev/null вместо. Читать это сообщение в блоге для получения более подробного объяснения,

Вам все равно необходимо установить MTA (агент передачи сообщений), чтобы отправить сообщения об ошибках. Postfix достаточно прост для установки с помощью: sudo apt-get install postfix


10
2017-12-30 17:27



Насколько я понял, «> / dev / null» отправит их только, а «> / dev / null 2> & 1» будет содержать все ошибки? Что я должен использовать для получения ошибок в журнале, но без писем? Теперь у меня нет писем (как я этого хочу), но уродливая «нет MTA ...» - Pit
afaik, невозможно зарегистрировать вывод, кроме как отправить его на электронные письма. Самое близкое, что вы можете сделать, это установить постфикс для локальной доставки почты (если вы запустите «sudo apt-get install postfix», он предложит вам настроить локальную доставку. Хотя это первоначально напоминало боль, оно фактически работает намного лучше. Когда я вхожу в систему через ssh, я вижу новое электронное письмо на компьютере, если предыдущее задание не удалось. Я считаю его более удобным, чем проверка журнала. - paneer_tikka
Я думаю, это может быть хорошо для меня. благодаря - Pit


Это старый вопрос, но есть дополнительный ответ, полезный в некоторых случаях.

Произведите вывод вашей команды cron через logger поэтому они попадают в syslog.

Это немного проще, чем установка postfix, и он помещает этот вывод в syslog наряду с другими вашими журналами. Эта команда будет захватывать stdout AND stderr, чтобы вы не увидели No MTA installed и вы увидите все свои результаты в syslog.

Пример ввода cron:

0 3 * * * (cmd1;  cmd2) 2>&1 | logger -t mycmd

Вы можете просматривать журналы с помощью тега mycmd с помощью:

grep 'mycmd' /var/log/syslog

8
2017-10-22 22:44



Работают ли трубы на рабочих местах cron? - CivMeierFan


Вы можете установить MAILTO=”” переменная в начале вашего crontab файл. Это также отключит оповещение по электронной почте. Редактировать / открыть ваши задания cron:

$ crontab -e

В верхней части файла введите:

MAILTO=""

https://www.cyberciti.biz/faq/disable-the-mail-alert-by-crontab-command/


1
2018-02-19 05:18





я столкнулся с этой проблемой, используя инструменты Kitematic Docker, перейдите в контейнер magento click exe> _, затем запустите apt-get update

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


1
2017-09-18 19:05





  1. fisrt install postfix, может решить проблему

    root $ sudo apt-get install postfix

  2. если Ubuntu, вы можете редактировать файл crontab

    root $ vim / etc / crontab

  3. внимание, верхний файл, а не код в первой строке и введите

    MAILTO = root // текущий пользователь системы

  4. когда cron выполняет любую задачу, вы получите электронную почту

    root $ mail


0
2017-09-02 07:40