crontab -e 编辑命令 执行python文件
结果crontab 找不到 python, 或者使用的不是我们用户的python,而是系统默认的python
因为 Crontab 会使用默认的环境, 并不会读取我们配好的环境, 我们普通用户一般会把环境变量设置在 .bashrc 文件 或者 .bash_profile 等文件中,但是 crontab 并不会进行识别.嘿嘿嘿
步骤一:
这时我们可以手动指定 python, xxx/xxx/xx/ python3 python 文件 这样的方式
错误用例:
crontab -e
00 03 * * * python3 /home/youjun.wang/csv/mdl_online/run_model &>/xx/xx/xx.log &
正确的:
00 03 * * * /opt/soft/python-3.6.10-wyj/bin/python3 /home/youjun.wang/csv/mdl_online/run_model &>/xx/xx/xx.log &
步骤二:
设置 项目地址 python_path, 一般我们都是写到 环境的配置文件里的,结果 crontab 比较呆,他不会识别, 所以我们要自己在 crontab 的文件里 export python_path 一下, 或者 写个shell 脚本, 在 shell 脚本里面export 一下.
先给你们看个错误的用例;
00 03 * * * export PYTHONPATH=$PYTHONPATH:/home/youjun.wang/csv/mdl_online
00 03 * * * /opt/soft/python-3.6.10-wyj/bin/python3 /home/youjun.wang/csv/mdl_online/run_model &>/xx/xx/xx.log &
正确的
0 03 * * * export PYTHONPATH=$PYTHONPATH:/home/youjun.wang/csv/mdl_online
/opt/soft/python-3.6.10-wyj/bin/python3 /home/youjun.wang/csv/mdl_online/run_model &>/xx/xx/xx.log &```
不知道你们被坑到没,反正我这个呆逼被坑到了, 写了两个任务, 结果还是识别不了python path,很久以后才反应过来这玩意只能写一行
但是这样写太长了, 不便于维护
所以
example.sh 文件
```shell
export PYTHONPATH=$PYTHONPATH:/home/youjun.wang/csv/mdl_online
/opt/soft/python-3.6.10-wyj/bin/python3 /home/youjun.wang/csv/mdl_online/run_model &>/xx/xx/xx.log &
crontab -e
00 03 * * * sh /xx/xx/example.sh
这样就很简洁, 很nice .
希望我的经历能给你一点帮助.