3

У меня есть crontab (root), который запускает скрипт, и вывод устанавливается в> /dev /null, но я всегда получаю электронные письма, когда он запускается. Я только хочу получать сообщения об ошибках.

# Rackspace driveclient update (12pm MST)
0 12 * * * /root/scripts/driveclient-update > /dev/null

Единственный способ отключить его - использовать> /dev /null 2> & 1, но тогда я не получу сообщения об ошибках. Это происходит на трех разных серверах CentOS, два 6.3 и один 6.4.

ПРИМЕЧАНИЕ: я много раз читал, что> /dev /null должен отправлять туда стандартный вывод и предотвращать электронную почту, если в сценарии нет ничего, кроме стандартного вывода, поэтому он работает, по крайней мере, для некоторых людей; Я не могу понять, почему он не работает на этих серверах.

Вот пример того, где> /dev /null должен работать:

http://www.alphadevx.com/a/384-Suppressing-Cron-Job-Email-Notifications

4 ответа4

3

Установите MAILTO = "you@me.com" в файле crontab. И пусть ваш скрипт ' echo ' stderr или stderr, когда исключения генерируются $(subshell). Может произойти что угодно, поэтому работайте с возвращаемыми значениями (0 - это нормально, все остальное - исключение), как в этом примере:

#!/bin/bash
return=$(/usr/bin/curl --silent --show-error --fail "http://server/somestate" 2>&1)
exitcode=$?
if [ $exitcode != 0 ]
then
    echo "ERROR $HOSTNAME $0 $exitcode $return"
    logger "ERROR $HOSTNAME $0 $exitcode $return"
    exit $exitcode
else
    logger "INFO $HOSTNAME $0 $exitcode $return"
    exit 0
fi
1

> только перенаправляет std out/err, электронная почта - это внутренняя функция скрипта, наиболее похожая на. проверьте скрипт -h наличие дополнительных параметров или служебных документов стойки

0

Для дальнейшего использования. Вам не нужно отправлять все в лог-файл. Можно также сказать, что bash также отправляет вывод на STDERR в /dev /null.

# Rackspace driveclient update (12pm MST)
0 12 * * * /root/scripts/driveclient-update > /dev/null 2>&1

Обратите внимание, что я только добавил 2>&1 в конец файла.

0

Я обнаружил, что wget и yum отправляют stdout в stderr, поэтому мне пришлось все передавать в лог-файлы.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .