Назад | Перейти на главную страницу

Как запретить Cron отправлять сообщения об ошибках

У меня есть странные письма от cron:

Return-Path: <root@domain.com>
Delivered-To: root@domain.com
Received: by domain.com (Postfix, from userid 0)
    id 6F944264D0; Mon, 10 Jan 2011 10:35:01 +0000 (UTC)
From: root@domain.com (Cron Daemon)
To: root@domain.com
Subject: Cron <root@domain> lynx -dump http://www.domain.com/cron/realqueue
Content-Type: text/plain; charset=ANSI_X3.4-1968
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <LOGNAME=root>
Message-Id: <20110110103501.6F944264D0@domain.com>
Date: Mon, 10 Jan 2011 10:35:01 +0000 (UTC)

/bin/sh: lynx: not found

У меня есть эти настройки cron в файле crontab:

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin


*/5 * * * * lynx -dump http://www.domain.com/cron/realqueue

17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )

Lynx также установлен на моем Ubuntu.

Ofc вместо domain.com стоит мой домен, только что замененный.

Спасибо ;)

Вы должны убедиться, что двоичный файл lynx находится в одном из мест, указанных в переменной PATH, или использовать полный путь к двоичному файлу в строке cron. Чтобы устранить ошибки, вы хотите перенаправить STDERR и STDOUT в / dev / null, например:

*/5 * * * * lynx -dump http://www.domain.com/cron/realqueue >/dev/null 2>&1

Первое перенаправление отправляет STDOUT в / dev / null, а второе отправляет STDERR с STDOUT (то есть в / dev / null).

Настоящая проблема здесь в следующем:

/ bin / sh: lynx: не найдено

Это означает, что lynx не найден, и поэтому эта строка в вашем crontab даже не запускается. Подавляя ошибки с помощью предложений перенаправления от Scrivener или blueben, вы просто скрыли тот факт, что команда, которую вы хотите запустить, не выполняется.

Как правило, cron отправляет эти электронные письма с сообщениями об ошибках. Лучший способ подавить электронные письма - исправить ошибки, и только если вы не можете исправить ошибки (например, скрипт всегда шумный), вы должны начать перенаправлять вывод в / dev / null.

Добавьте MAILTO в начало вашего crontab и установите для него пустую строку:

 MAILTO=""

Вы хотите:

* / 5 * * * * lynx -дамп http://www.domain.com/cron/realqueue >> / dev / null 2> & 1

Если вам нужен путь к двоичному файлу lynx, самая простая команда: which lynx.

Это должно дать вам что-то вроде /usr/bin/lynx

возможно, двоичные файлы lynx не зарегистрированы в $ PATH.

попробуйте это в своей оболочке:

# locate lynx

он вернет несколько строк. Выберите тот, который ведет к двоичным файлам lynx, а затем выполните

# export PATH=$PATH:{the firstly returned string path until last dir}