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

Cron Job не отправляет вывод скрипта в виде электронной почты, в то время как тот же скрипт отправляет электронное письмо, если запускается из cli

У меня есть сценарий, который выводит данные в файл и делает несколько awk операции с этим выходным файлом и смешивание вывода двух файлов с помощью paste -d, а затем отправка электронной почты вновь созданного файла по электронной почте. Если я запускаю тот же сценарий из командной строки, он также выдает вывод и отправляет электронную почту, но если я использую ту же команду для задания cron. Это не отправка электронной почты и /var/log/cron дает это сообщение. "CROND[6235]: (root) MAIL (mailed 125 bytes of output but got status 0x0043#012)". No info for message code (0x0043#012). Пожалуйста, предложите.

Из раздела комментариев к вопросу я вижу, что SELinux не позволяет вашему заданию cron отправлять электронные письма. Отказ не происходит при ручном запуске из командной строки, поскольку SELinux по умолчанию не ограничивает интерактивные сеансы. С другой стороны, задания, запускаемые Cron, ограничены.

Я не уверен, почему в вашей системе CentOS 7 был сгенерирован отказ SELinux. Я пытался бежать mail из Cron в полностью обновленной системе CentOS 7, и сообщение было успешно отправлено. Я предлагаю вам убедиться, что на вашем сервере установлены последние пакеты (yum upgrade) и выполнить перемаркировку SELinux во всей файловой системе (touch /.autorelabel && reboot).

следить стандартные шаги по устранению неполадок SELinux в случае, если ваша работа cron продолжает терпеть неудачу после переименования. Или вместо этого вы можете настроить разрешающий режим навсегда:

  • Вариант 1. Настройте разрешающий режим SELinux на cron служба:
# semanage permissive -a crond_t
  • Вариант 2. Настройте разрешающий режим SELinux во всей системе:
# sed -ri.bak 's/^(SELINUX=).*/\1permissive/' /etc/selinux/config && reboot