cron info no mta installed discarding output

i’m make a new shell script crontab notify to telegram but the message doesn’t received

environment ubuntu 16.04

i expect the message can be received in telegram

1 Answer 1

this is quick issue for your case.

for one mobile device serial number:

for whitespace separated serials in devices.txt file you should add

add job to crontab

result:

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

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

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

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

9 ответов

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

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

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

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

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

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

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

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

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

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

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

Это предотвратит попытку отправки cron электронной почтой.

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

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

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

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

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

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

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

или сгруппируйте их, например:

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

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

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

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

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

Произведите вывод вашей команды cron через logger , чтобы они попали в syslog.

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

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

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

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

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

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

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

8 ответов

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

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

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

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

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

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

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

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

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

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

затем с вашим cron

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

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

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

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

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

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

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

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

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

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