Я создаю задания cron в Ubuntu, помещая исполняемый файл в один из /etc/cron.{daily,hourly,monthly,weekly}
. Есть много каталогов, начинающихся с cron:
kent@rat:~$ ls -ld /etc/cron*
drwxr-xr-x 2 root root 4096 2009-06-06 18:52 /etc/cron.d
drwxr-xr-x 2 root root 4096 2009-07-16 13:17 /etc/cron.daily
drwxr-xr-x 2 root root 4096 2009-06-06 18:52 /etc/cron.hourly
drwxr-xr-x 2 root root 4096 2009-06-06 18:52 /etc/cron.monthly
-rw-r--r-- 1 root root 724 2009-05-16 23:49 /etc/crontab
drwxr-xr-x 2 root root 4096 2009-06-06 18:52 /etc/cron.weekly
Я хотел бы получать электронную почту из моих сценариев, когда:
- Сценарий завершается неудачно и выдает код выхода, отличный от нуля.
- Сценарий есть что сказать мне
У меня установлен и работает SSMTP , я отправляю почту с моего Google-аккаунта. Тот факт, что SSMTP может отправлять почту только с использованием одной учетной записи, для меня не проблема. Это просто домашний сервер, и у меня нет пользователей, которые могут добавлять задания cron.
Я хотел бы знать, как рассылка из скриптов обычно работает в Linux / Unix в целом и в Ubuntu в частности. Я также хотел бы узнать о хорошем способе получения писем в двух вышеупомянутых ситуациях.
/etc/aliases
записи не должны соответствовать форматуname: value1, value2, ...
? Я не знаю, может быть, формат был изменен в какой-то момент за последние 8 лет.Чтобы получать электронную почту, отправленную с vixie cron, вам нужно что-то, что копирует команду sendmail. Так что установка postfix или SSMTP поможет разобраться с этой частью. Если вы используете postfix, тогда файл псевдонимов можно использовать для сопоставления пользователей системы с реальными адресами электронной почты.
Добавление MAILTO = "foo@bar.com" в начало crontab приведет к отправке любого вывода из задания cron. Это независимо от кода ошибки.
Для сценариев, которые правильно выводят ошибки в STDERR, легко получить по электронной почте, только если они ошибаются, просто сделайте это:
Это перенаправит только STDOUT на ноль. Если какие-либо сообщения STDERR присутствуют, они получат электронное письмо к вам.
Тем не менее, я обнаружил, что некоторые сценарии будут выводить ошибки неправильно как STDOUT и устанавливать код выхода равным 1. Я не нашел способ получить выходные данные из них, но игнорирую вывод, если код выхода равен 0. Единственный метод Я могу думать о том, чтобы перенаправить вывод в файл, а затем, если код выхода не равен 0, вывести этот файл для захвата cron. Кажется довольно ужасно, хотя.
источник
Если вы хотите отправить все выходные данные (stdout и stderr) на определенный адрес, вы можете использовать
MAILTO
переменную. Например, поместите следующее в верхней части скрипта.источник
попробуйте добавить "root: your@email.address" в / etc / aliases
это отправит все сообщения для этого пользователя на вашу электронную почту. если вам не нужны все сообщения, вы можете создать пользователя специально для этого.
Пока сценарий что-то выводит, вы получите письмо.
источник
На всех моих производственных серверах, которые обычно запускают около 20 cronjobs ежедневно, я клянусь пакетом python-cronwrap. Проверьте это здесь: http://pypi.python.org/pypi/cronwrap . Это действительно легко настроить и, прежде всего, надежно.
источник
Я не думаю, что SSMTP соответствует вашим потребностям. Вам нужно что-то, что может «получать» почту от процессов cron, а затем отправлять ее в ваш реальный почтовый ящик.
Я использую Sendmail, но это потому, что я старая рука Sun; Я знаю, что все крутые ребята в эти дни смеются над Postfix. Ваше сообщество Ubuntu может помочь вам настроить почтовую систему.
источник
Альтернатива - я заархивирую всю корневую почту на несколько файлов, а затем удаляю исходную почту.
Я cron скрипт (вот ключевая часть) -
Это держит вещи в порядке, и я могу следить за этим. Я мог бы отправить ежедневный почтовый файл на внешний почтовый идентификатор и т. Д.
источник