我编写了一个 python 脚本,当我将其运行为 时,它运行良好python3 /path/to/file/Script.py
,但是一旦我尝试通过 crontab 运行它,它就无法按预期运行。我的脚本应该下载一个文件,解析它,将数据附加到一个新的文本文件中,并将更新的文本文件作为电子邮件发送。
我尝试过使用crontab -e
and sudo crontab -e
,但都不起作用。在两个 crontab 中,我都尝试过:
45 20 * * * python3 /path/to/file/Script.py
45 20 * * * $(which python3) /path/to/file/Script.py
45 20 * * * /usr/bin/python3 /path/to/file/Script.py
45 20 * * * /path/to/file/Script.py (after adding #!/usr/bin/env python3 at the beginning of my script)
但这些都没有奏效。我将 crontab 格式中的分钟和小时更改为可以工作的时间,而不是过去的时间。我进去/var/log/syslog
看看出了什么问题,但说实话,我不明白发生了什么事。
日志文件显示:
Mar 23 20:49:01 G3 CRON[10843]: (g3) CMD (/home/g3/covidfiles/COVID19.py)
Mar 23 20:49:01 G3 postfix/pickup[6415]: 435D914810F1: uid=1000 from=<g3>
Mar 23 20:49:01 G3 postfix/cleanup[8157]: 435D914810F1: message-id=<20200324004901.435D914810F1@G3>
Mar 23 20:49:01 G3 postfix/qmgr[6416]: 435D914810F1: from=<g3@G3>, size=593, nrcpt=1 (queue active)
Mar 23 20:49:01 G3 postfix/pickup[6415]: 45822148041F: uid=0 from=<root>
Mar 23 20:49:01 G3 postfix/cleanup[6515]: 45822148041F: message-id=<20200324004901.45822148041F@G3>
Mar 23 20:49:01 G3 postfix/local[6519]: 435D914810F1: to=<g3@G3>, orig_to=<g3>, relay=local, delay=0.02, delays=0.01/0/0/0.01, dsn=2.0.0, status=sent (delivered to mailbox)
Mar 23 20:49:01 G3 postfix/qmgr[6416]: 45822148041F: from=<root@G3>, size=625, nrcpt=1 (queue active)
Mar 23 20:49:01 G3 postfix/qmgr[6416]: 435D914810F1: removed
Mar 23 20:49:01 G3 postfix/local[6520]: 45822148041F: to=<root@G3>, orig_to=<root>, relay=local, delay=0.03, delays=0.02/0/0/0.01, dsn=2.0.0, status=sent (delivered to mailbox)
Mar 23 20:49:01 G3 postfix/qmgr[6416]: 45822148041F: removed
Mar 23 20:49:06 G3 postfix/pickup[6415]: C98061480A77: uid=1000 from=<g3>
Mar 23 20:49:06 G3 postfix/cleanup[8157]: C98061480A77: message-id=<20200324004906.C98061480A77@G3>
Mar 23 20:49:06 G3 postfix/qmgr[6416]: C98061480A77: from=<g3@G3>, size=924, nrcpt=1 (queue active)
Mar 23 20:49:06 G3 postfix/local[6519]: C98061480A77: to=<g3@G3>, orig_to=<g3>, relay=local, delay=0.02, delays=0.01/0/0/0.01, dsn=2.0.0, status=sent (delivered to mailbox)
Mar 23 20:49:06 G3 postfix/qmgr[6416]: C98061480A77: removed
它说电子邮件已发送到邮箱,但我没有收到任何东西,其他收件人也没有收到任何东西。我没有安装 mailutils 或 postfix,所以我安装了它们。他们都没有解决我的问题。这是一个个人项目,我只是不知道下一步该走什么路。我希望该脚本每天晚上 8:00(东部标准时间)后运行一次。
我不确定这是否有帮助,但我正在运行 Linux Mint Cinnamon 并使用文本编辑器编写我的代码。
答案1
postfix
您的输出显示消息从to和 tosyslog
传递。根据邮件子系统,您可能会在目录 /var/mail 中找到电子邮件,或者作为文件或,或者在相应主目录的子目录中找到。cron
g3
root
g3
root
~/Maildir
mail
这些邮件文件可以使用( 或) 命令正确读取,但在这种情况下,使用您最喜欢的编辑器 ( ) 或寻呼机 ( )mailx
可能同样容易。它们将包含可能以某种方式解释的消息vi
less
cron
为什么您的脚本无法运行。
如果它们确实包含cron
输出,但仍然无法了解脚本失败的原因,请修改脚本以在运行时生成状态消息(最好写入标准错误而不是标准输出),例如打印关键变量的值等。