虚拟环境中 Django 项目的 crontab 问题:"mailed 1 byte of output; but got status 0x004b, #012"

crontab issue with Django project in virtual environment :"mailed 1 byte of output; but got status 0x004b, #012"

我有一个 django 项目,其中有一项任务是每周向所有用户发送电子邮件通知。以下是方法步骤:-

1.Created 用于发送每周电子邮件通知的管理命令。

2.edited crontab 如下:-

$ sudo crontab -e
#For testing purposes I have edited as below
 1 * * * * pathto/virtualenv pathto/manage.py notify_email

3.restarted crontab

$sudo service cron restart
cron stop/waiting
cron start/running, process 16218

4.to 检查日志状态我试过下面

$tail -n 10 /var/log/syslog

Mar 19 13:36:08 praneeth-Latitude-E6400 cron[15293]: (CRON) INFO (Skipping @reboot jobs -- not system startup)
Mar 19 13:37:01 praneeth-Latitude-E6400 CRON[15364]: (praneeth) CMD (/home/praneeth/wru-pam/venv/bin/python3.4 /home/praneeth/wru-pam/pam_site/manage.py notify_about_changes)
Mar 19 13:37:02 praneeth-Latitude-E6400 postfix/sendmail[15367]: fatal: open /etc/postfix/main.cf: No such file or directory
Mar 19 13:37:02 praneeth-Latitude-E6400 CRON[15363]: (praneeth) MAIL (mailed 1 byte of output; but got status 0x004b, #012)
Mar 19 13:38:01 praneeth-Latitude-E6400 CRON[15416]: (praneeth) CMD (/home/praneeth/wru-pam/venv/bin/python3.4 /home/praneeth/wru-pam/pam_site/manage.py notify_about_changes)
Mar 19 13:38:01 praneeth-Latitude-E6400 postfix/sendmail[15418]: fatal: open /etc/postfix/main.cf: No such file or directory
Mar 19 13:38:01 praneeth-Latitude-E6400 CRON[15415]: (praneeth) MAIL (mailed 1 byte of output; but got status 0x004b, #012)
Mar 19 13:39:01 praneeth-Latitude-E6400 CRON[15457]: (praneeth) CMD (/home/praneeth/wru-pam/venv/bin/python3.4 /home/praneeth/wru-pam/pam_site/manage.py notify_about_changes)
Mar 19 13:39:01 praneeth-Latitude-E6400 postfix/sendmail[15459]: fatal: open /etc/postfix/main.cf: No such file or directory
Mar 19 13:39:01 praneeth-Latitude-E6400 CRON[15456]: (praneeth) MAIL (mailed 1 byte of output; but got status 0x004b, #012)

5.I 已经通过以下 forum 解决方案来查看终端中的邮件,当我像下面这样进入邮件时发现 1 到 43 个条目

$sudo mail
N  1 Cron Daemon        Mon Mar 16 14:21   22/1194  Cron <root@praneeth-Latitude-E6400> cd /home/praneeth/wru-pam/pam_site && /home/praneet
 N  2 Cron Daemon        Mon Mar 16 14:22   22/1194  Cron <root@praneeth-Latitude-E6400> cd /home/praneeth/wru-pam/pam_site && /home/praneet
 N  3 Cron Daemon        Mon Mar 16 14:23   22/1194  Cron <root@praneeth-Latitude-E6400> cd /home/praneeth/wru-pam/pam_site && /home/praneet
 N  4 Cron Daemon        Mon Mar 16 14:24   22/1194  Cron <root@praneeth-Latitude-E6400> cd /home/praneeth/wru-pam/pam_site && /home/praneet
 N  5 Cron Daemon        Mon Mar 16 14:25   22/1194  Cron <root@praneeth-Latitude-E6400> cd /home/praneeth/wru-pam/pam_site && /home/praneet
 N  6 Cron Daemon        Mon Mar 16 14:26   22/1194  Cron <root@praneeth-Latitude-E6400> cd /home/praneeth/wru-pam/pam_site && /home/praneet
 N  7 Cron Daemon        Mon Mar 16 14:27   22/1194  Cron <root@praneeth-Latitude-E6400> cd /home/praneeth/wru-pam/pam_site && /home/praneet
 N  8 Cron Daemon        Mon Mar 16 14:28   22/1194  Cron <root@praneeth-Latitude-E6400> cd /home/praneeth/wru-pam/pam_site && /home/praneet
 N  9 Cron Daemon        Mon Mar 16 14:29   22/1194  Cron <root@praneeth-Latitude-E6400> cd /home/praneeth/wru-pam/pam_site && /home/praneet
 N 10 Cron Daemon        Mon Mar 16 14:30   22/1194  Cron <root@praneeth-Latitude-E6400> cd /home/praneeth/wru-pam/pam_site && /home/praneet
 N 11 Cron Daemon        Mon Mar 16 14:31   22/1194  Cron <root@praneeth-Latitude-E6400> cd /home/praneeth/wru-pam/pam_site && /home/praneet
 N 12 Cron Daemon        Mon Mar 16 14:32   22/1194  Cron <root@praneeth-Latitude-E6400> cd /home/praneeth/wru-pam/pam_site && /home/praneet
 N 13 Cron Daemon        Mon Mar 16 14:33   22/1194  Cron <root@praneeth-Latitude-E6400> cd /home/praneeth/wru-pam/pam_site && /home/praneet
 N 14 Cron Daemon        Mon Mar 16 14:34   22/1194  Cron <root@praneeth-Latitude-E6400> cd /home/praneeth/wru-pam/pam_site && /home/praneet
 N 15 Cron Daemon        Mon Mar 16 14:35   22/1194  Cron <root@praneeth-Latitude-E6400> cd /home/praneeth/wru-pam/pam_site && /home/praneet
 N 16 Cron Daemon        Mon Mar 16 14:36   22/1194  Cron <root@praneeth-Latitude-E6400> cd /home/praneeth/wru-pam/pam_site && /home/praneet
 N 17 Cron Daemon        Mon Mar 16 14:37   22/1194  Cron <root@praneeth-Latitude-E6400> cd /home/praneeth/wru-pam/pam_site && /home/praneet
 N 18 Cron Daemon        Mon Mar 16 14:38   22/1194  Cron <root@praneeth-Latitude-E6400> cd /home/praneeth/wru-pam/pam_site && /home/praneet
 N 19 Cron Daemon        Mon Mar 16 14:39   22/1194  Cron <root@praneeth-Latitude-E6400> cd /home/praneeth/wru-pam/pam_site && /home/praneet
 N 20 Cron Daemon        Mon Mar 16 14:40   22/1194  Cron <root@praneeth-Latitude-E6400> cd /home/praneeth/wru-pam/pam_site && /home/praneet
 N 21 Cron Daemon        Mon Mar 16 14:41   22/1194  Cron <root@praneeth-Latitude-E6400> cd /home/praneeth/wru-pam/pam_site && /home/praneet
 N 22 Cron Daemon        Mon Mar 16 14:42   22/1194  Cron <root@praneeth-Latitude-E6400> cd /home/praneeth/wru-pam/pam_site && /home/praneet
 N 23 Cron Daemon        Mon Mar 16 14:43   22/1194  Cron <root@praneeth-Latitude-E6400> cd /home/praneeth/wru-pam/pam_site && /home/praneet
 N 24 Cron Daemon        Mon Mar 16 14:44   22/1194  Cron <root@praneeth-Latitude-E6400> cd /home/praneeth/wru-pam/pam_site && /home/praneet
 N 25 Cron Daemon        Mon Mar 16 14:45   22/1194  Cron <root@praneeth-Latitude-E6400> cd /home/praneeth/wru-pam/pam_site && /home/praneet
 N 26 Cron Daemon        Mon Mar 16 14:46   22/1194  Cron <root@praneeth-Latitude-E6400> cd /home/praneeth/wru-pam/pam_site && /home/praneet
 N 27 Cron Daemon        Mon Mar 16 14:47   54/3457  Cron <root@praneeth-Latitude-E6400> cd /home/praneeth/wru-pam/pam_site && /home/praneet
 N 28 Cron Daemon        Mon Mar 16 14:48   54/3457  Cron <root@praneeth-Latitude-E6400> cd /home/praneeth/wru-pam/pam_site && /home/praneet
 N 29 Cron Daemon        Mon Mar 16 14:49   54/3457  Cron <root@praneeth-Latitude-E6400> cd /home/praneeth/wru-pam/pam_site && /home/praneet
 N 30 Cron Daemon        Mon Mar 16 14:50   54/3457  Cron <root@praneeth-Latitude-E6400> cd /home/praneeth/wru-pam/pam_site && /home/praneet
 N 31 Cron Daemon        Mon Mar 16 14:51   54/3457  Cron <root@praneeth-Latitude-E6400> cd /home/praneeth/wru-pam/pam_site && /home/praneet
 N 32 Cron Daemon        Mon Mar 16 14:52   54/3457  Cron <root@praneeth-Latitude-E6400> cd /home/praneeth/wru-pam/pam_site && /home/praneet
 N 33 Cron Daemon        Mon Mar 16 14:53   54/3457  Cron <root@praneeth-Latitude-E6400> cd /home/praneeth/wru-pam/pam_site && /home/praneet
 N 34 Cron Daemon        Mon Mar 16 14:54   54/3457  Cron <root@praneeth-Latitude-E6400> cd /home/praneeth/wru-pam/pam_site && /home/praneet
 N 35 Cron Daemon        Mon Mar 16 14:55   54/3457  Cron <root@praneeth-Latitude-E6400> cd /home/praneeth/wru-pam/pam_site && /home/praneet
 N 36 Cron Daemon        Mon Mar 16 14:56   54/3457  Cron <root@praneeth-Latitude-E6400> cd /home/praneeth/wru-pam/pam_site && /home/praneet
 N 37 Cron Daemon        Mon Mar 16 14:57   54/3457  Cron <root@praneeth-Latitude-E6400> cd /home/praneeth/wru-pam/pam_site && /home/praneet
 N 38 Cron Daemon        Mon Mar 16 14:58   54/3457  Cron <root@praneeth-Latitude-E6400> cd /home/praneeth/wru-pam/pam_site && /home/praneet
 N 39 Cron Daemon        Mon Mar 16 14:59   21/1323  Cron <root@praneeth-Latitude-E6400> cd /home/praneeth/wru-pam/pam_site && /home/praneet
 N 40 Cron Daemon        Mon Mar 16 15:00   21/1323  Cron <root@praneeth-Latitude-E6400> cd /home/praneeth/wru-pam/pam_site && /home/praneet
 N 41 Cron Daemon        Mon Mar 16 15:01   21/1323  Cron <root@praneeth-Latitude-E6400> cd /home/praneeth/wru-pam/pam_site && /home/praneet
 N 42 Cron Daemon        Mon Mar 16 15:02   21/1323  Cron <root@praneeth-Latitude-E6400> cd /home/praneeth/wru-pam/pam_site && /home/praneet
 N 43 Cron Daemon        Mon Mar 16 15:03   21/1323  Cron <root@praneeth-Latitude-E6400> cd /home/praneeth/wru-pam/pam_site && /home/praneet

例如,如果我输入 1,我会收到如下消息:- 消息 9:

From root@praneeth-Latitude-E6400.corp.ad.wrs.com  Mon Mar 16 14:29:02 2015
Return-Path: <root@praneeth-Latitude-E6400.corp.ad.wrs.com>
Date: Mon, 16 Mar 2015 14:29:01 -0400
From: root@praneeth-Latitude-E6400.corp.ad.wrs.com (Cron Daemon)
To: root@praneeth-Latitude-E6400.corp.ad.wrs.com
Subject: Cron <root@praneeth-Latitude-E6400> cd /home/praneeth/wru-pam/pam_site && /home/praneeth/wru-pam/venv/bin/python3.4 manage.py notify_about_changes
Content-Type: text/plain; charset=ANSI_X3.4-1968
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=root>
Status: R

发送每周电子邮件通知的解决方案的另一端 "I was able to send the automatic email notifications comfortably through kronos, django-celery with rabbitmq broker. But I would like to make the task as simple as possible with crontab."

非常感谢指导提前致谢

也许 this 可以帮助您解决 cron 抛出的后缀错误:

一个可能的解决方案是重新配置 postfix。可以使用以下命令重新配置:

sudo dpkg-reconfigure postfix

将显示用户界面。在每个屏幕上,select 以下值:

  • 好的
  • 互联网站
  • NONE
  • mail.example.com
  • mail.example.com、localhost.localdomain、本地主机
  • 没有
  • 127.0.0.0/8, 192.168.0/24
  • 0
  • +
  • 全部

您可能需要编辑 /etc/postfix/main.conf 以更新邮件主机名。

最后,我能够通过将 crontab 重新编辑为

来解决 crontab 中发送电子邮件通知的前三个步骤
$*/1 * * * *  /home/praneeth/wru-pam/venv/bin/python3.4 /home/praneeth/wru-pam/pam_site/manage.py notify_about_changes --settings=project.settings.development

我还发现第 4 步和第 5 步不是检查 crontab 日志状态的正确方法。