& ldquo; (CRON) информация (MTA не установлен, отбрасывается вывод) ошибка в системном журнале

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

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

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

Я установил mono-complete и запускаю веб-сервер стека служб.

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

258
задан 31 December 2013 в 03:32

11 ответов

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

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

sudo apt-get install postfix

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

205
ответ дан 31 December 2013 в 03:32

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

sudo crontab -e

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

* * * * * yourCommand >/dev/null 2>&1
101
ответ дан 31 December 2013 в 03:32

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

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

sudo aptitude install postfix

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

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

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

<user>

с «root».

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

71
ответ дан 31 December 2013 в 03:32

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

crontab -e

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

0 3 * * * cmd  >> /some/log/file 2>&1

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

0 3 * * * cmd1  >> /some/log/file 2>&1;  cmd2  >> /some/log/file 2>&1

или сгруппировать их,вот так:

0 3 * * * (cmd1;  cmd2)  >> /some/log/file 2>&1

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

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

51
ответ дан 31 December 2013 в 03:32

Если вы не хотите устанавливать 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

28
ответ дан 31 December 2013 в 03:32

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

MAILTO=""

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

37
ответ дан 31 December 2013 в 03:32

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

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

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

Пример записи cron:

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

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

grep 'mycmd' /var/log/syslog
25
ответ дан 31 December 2013 в 03:32

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

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

11
ответ дан 31 December 2013 в 03:32
  1. Сначала установите постфикс, который может решить проблему

    sudo apt-get install postfix
    
  2. Если Ubuntu, вы можете редактировать файл crontab sudo vim /etc/crontab.

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

    MAILTO=корень // текущий пользователь системы
    
  4. Когда cron выполнит какое-либо задание, вы получите письмо по электронной почте

    .
    
2
ответ дан 31 December 2013 в 03:32

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

$ crontab -e

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

MAILTO=""

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

3
ответ дан 31 December 2013 в 03:32

У меня возникла эта проблема с использованием инструментов Kitematic Docker .
Перейдите в контейнер magento и нажмите exe .

Затем запустите

apt-get update

Это если вы пытаетесь запустить magento на kitematic. В журнале будет отображаться следующая ошибка на виртуальной машине:

требуется обновление.

Извините, если вы потерялись, но так работает. Вы все время теряетесь, но просто прочтите об этом, и однажды кусочки соберутся вместе. Будьте терпеливы.

1
ответ дан 31 December 2013 в 03:32

Другие вопросы по тегам:

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