参考文章如下:
https://zhuanlan.zhihu.com/p/231539300
https://blog.csdn.net/hzy459176895/article/details/107978979
目的:要定时运行docker内的ontime_es.py文件
1 编写ontime_es.py文件,在同一个文件夹创建ontime_es .sh文件,如下:
1.1 需要注意的是,py文件头部要有:
#!/usr/bin/env python
1.2 .sh文件内容:其中python后面的路径是docker里面的路径
#!/usr/bin/env python
python /app/app/instrument/ontime_es.py
2 进入容器内部,查看路径:
2.1 输入命令进入docker内部 :
docker exec -it docker_name bash。
其中 docker_name是你容器的名字,可通过docker ps命令查看。
2.2 进入容器里后cd到ontime_es.py目录下:
此时我的路径为app/app/instrument,就是上面ontime_es.sh里面放的路径
2.3 给ontime_es.sh赋予权限,参考了上面的文章:
chmod +x ontime_es.sh
chmod 777 ontime_es.sh
3 crontab 内容编写
3.1 查看crontab
命令:cat /etc/crontab
3.2 查看当前用户的定时任务:
命令:crontab -l
3.3 设定定时任务
编辑crontab 通过命令:crontab -e
写入:30 5 * * * docker exec dps /bin/bash /app/app/instrument/ontime_es.sh
意思为,每天5点半运行容器dps中的ontime_es.sh
docker exec dps /bin/bash为进入容器,后面是ontime_es.sh在容器中的路径
3.4 启动定时任务
命令: systemctl restart crond
3.5 查看刚配置的定时任务
命令:crontab -l
3.6 查看运行结果
命令:cat /var/spool/mail/root
4 遇到的问题
4.1 一开始没有用sh文件,只用了py文件,报如下错误:
搜索解决方案:
在py文件前加上:#!/usr/bin/env python,但还是同样的错误,后来加上了sh文件,任务成功