У меня есть сценарий, который выводит данные в файл и выполняет несколько операций awk
с этим файлом вывода и смешивает вывод двух файлов с помощью команды paste -d, а затем отправляет электронное письмо с вновь созданным файлом по электронной почте. . Если я запускаю тот же сценарий из командной строки, он также дает вывод и отправляет электронную почту, но если я использую ту же команду для задания cron. Электронная почта не отправляется, и / var / log / cron
выдает это сообщение. «CROND [6235]: (корень) MAIL (отправлено 125 байтов вывода, но получен статус 0x0043 # 012)». Нет информации для кода сообщения (0x0043 # 012).
Пожалуйста, предложите.
Из раздела комментариев к вопросу я вижу, что SELinux не позволяет вашему заданию cron отправлять электронные письма. Отказ не происходит при ручном запуске из командной строки, поскольку SELinux по умолчанию не ограничивает интерактивные сеансы. С другой стороны, задания, запускаемые Cron, ограничены.
Я не уверен, почему в вашей системе CentOS 7 был сгенерирован отказ SELinux. Я попытался запустить команду mail
из Cron в полностью обновленной системе CentOS 7, и сообщение было успешно отправлено. Я предлагаю вам убедиться, что на вашем сервере установлены последние пакеты ( yum upgrade
) и выполните перемаркировку SELinux во всей файловой системе ( touch /.autorelabel && reboot
).
Выполните стандартные шаги по устранению неполадок SELinux , если ваш cron работа продолжает терпеть неудачу после перемаркировки. Или вместо этого вы можете настроить разрешающий режим навсегда:
cron
: # semanage permissive -a crond_t
# sed -ri.bak 's/^(SELINUX=).*/\1permissive/' /etc/selinux/config && reboot