为什么 cron job 不编译 python 文件?



Cron没有编译我的.py文件,我也无法从Cron那里收到电子邮件来理解为什么Cron不工作。但如果我只是在终端中运行命令~/t/test.sh,一切都会很好。

cron:中的代码

SHELL=/bin/bash
MAILTO=mymail@gmail.com
30 0-23 1-31 1-12 0-6 ~/t/test.sh

我想运行一个脚本test.sh,它的代码是:

#!/bin/bash
cd /home/alex/t && python3.8 ./test.py

test.py:中的代码

from datetime import datetime
current_time = datetime.now()
f = open("text.txt", 'w+')
f.write("Hello world! Now is {0}n".format(current_time))
f.close()

我通过sudo crontab-ecrontab-e命令启动了Cron。我把克朗放在MAILTO=mymail@gmail.com的第一行。我安装了yum install mailx。我尝试将命令>/dev/null 2>&1添加到Cron中,即:* * * * * ~/t/test.sh >/dev/null 2>&1没有什么帮助我使用Ubuntu 18.04Python 3.8.2以下是grep CRON /var/log/syslog命令的日志显示的内容:

Apr 30 15:35:01 av CRON[2130]: (alex) CMD (~/t/test.sh)

Apr 30 15:35:01 av CRON[2129]: (alex) MAIL (mailer 68 bytes of output put get status 0x004b from MTA#012)

有人遇到过这个问题吗?你能帮忙吗?

您的test.sh应该是这样的:(需要完整路径(

#!/bin/bash
/"location where python is installed"/python/bin/python /home/alex/t/test.py

代码中最薄弱的环节是在没有完整路径的情况下调用Python 3.8解释器。使用完整的绝对路径调用bash,cd到绝对路径,并通过指向cd-ed所在目录的路径访问脚本。只有Python假设PATH环境变量中存在一些目录。

尝试通过Python 3.8所在位置的完整路径访问它。

相关内容

  • 没有找到相关文章