我每天都会用 cronjob 启动一个脚本:
0 1 * * * /bin/bash /home/performanceRatio.sh
脚本:
#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
python3 /home/get_weather_data_crn.py &&
python3 /home/pv.py
脚本正在运行,但仅向 mysql 数据库写入 NULL:
| 2021-02-03 13:00:00 | 48.17 | 11.14 | NULL | NULL | NULL | NULL | 20 | 1 | CRN |
| 2021-02-03 14:00:00 | 48.17 | 11.14 | NULL | NULL | NULL | NULL | 20 | 1 | CRN |
| 2021-02-03 15:00:00 | 48.17 | 11.14 | NULL | NULL | NULL | NULL | 20 | 1 | CRN |
| 2021-02-03 16:00:00 | 48.17 | 11.14 | NULL | NULL | NULL | NULL | 20 | 1 | CRN
它正在从 CAMS(一种气象服务)获取数据。手动启动脚本时,它正常工作。数据库连接似乎正常工作,只是在使用 Cron 运行时没有按预期写入天气值。其他值已写入。
使用:Ubuntu 20.04
它被写入数据库:
engine = create_engine('mysql+pymysql://{}:{}@{}/{}'.format(user, passwd, host, database))
df.to_sql(con=engine, name=name, if_exists='append', index = True, chunksize=1000)
答案1
这似乎是我的路径的问题。我像这样编辑了 crontab -e,它按每分钟的计划运行(所以我想它也会在凌晨 1 点运行):
0 1 * * * cd /home && /bin/bash /home/performanceRatio.sh