Crontab 无法定时执行程序
背景
前两天用 Python 代码写了段程序,确认程序能在服务器正常运行后,使用 Crontab 时间表设定了每天早上 7:10 定时执行,可测试了好几遍程序依然没被执行
# 定时表达式
10 7 * * * /usr/bin/python3 /home/YiSchool/YiSchool.py
解决思路
- 代码在服务器上确定是能运行的,但挂在 Crontab 就不行,首先排除了定时表达式书写错误的可能,毕竟表达式就三个简单参数【定时执行时间,运行环境路径,执行的代码路径】
- 以往在代码运行过程中,有时会因为相对路径和绝对路径的关系导致代码无法正常执行,本次我编写的代码需要读取一个外部的 Json 数据文件,使用的就是相对路径。因为 Crontab 定时执行代码时,无法通过相对路径找到文件,于是我将代码中的 Json 文件路径改为服务器中的绝对路径,重启 Crontab 服务,问题解决,实现定时执行效果。
# 读取用户信息文件,使用绝对路径
with open('/home/YiSchool/user.json', 'r', encoding="utf-8") as f:
user_list = json.load(f)