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-e
和crontab-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所在位置的完整路径访问它。