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, если вы уверены, что вам не нужно его хранить.
Затем посмотрите файл журнала после работа выполняется.