linux下配置crontab执行python文件
crontab是Linux提供的定时工具,crontab命令常用于设置周期性被执行的指令,也可以理解为设置定时任务。
添加定时任务
1.确保crontab状态,执行service crond status是running的状态
如果没有crontab则需要进行安装
1.执行cat /etc/cron
得到相应参数
第一个*对应的是分钟,以此类推就是小时,天,月,周等
user-name需要指定用户,默认是本机用户
2.执行crontab -e,进入脚本配置页面,可以根据自己的需要进行添加,这里python的路径以及脚本的路径需要写绝对路径,不然可能不会认
例如:
这里就是标示每5分钟执行一次后面的命令
进行保存
3.执行crontab -l 查看是否在任务列表中
4.服务操作说明:
/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置
5.查看日志输出
之前的查阅中很多说可以到/var/logs/cron.log中查看,但是机器中并没有看到,和我有一样困扰的,可以利用重定向输出日志来进行定位
只需要在任务后面追加日志重定向输出
重定向类型
0:标准输入。
1:标准输出。
2:错误信息输出。
2>&1:将错误信息重定向到标准输出。
1,python xxx.py>server.log,将执行的错误信息输出重定向到当前目录的server.log日志文件中。
2,python xxx.py>server.log,将./spark-submit.sh执行的标准输出和错误信息重定向到当前目录的server.log日志文件中。
3,如果想标准输出和错误信息都不显示,可以重定向到/dev/null中。
现在来仔细说一下如何编写crontab中的命令:
首先第一个参数user-name一般来说默认用户即可
后面接着的参数即为你需要执行
例如:在本机上只需要执行python ***.py即可
但是在crontab中需要给出绝对路径,和需要执行source
例如:
source /home/work/.bash_profile && cd /home/work/workspace/sss && git pull && PYTHONPATH=. python tools/docker/cron/cron_check_status.py >> /home/work/workspace/sss/tools/docker/cron/cron_check_status.log
这样,其中也需要指出python的路径
还有一种方式就是将上面的命令写成shell脚本或者python文件后再直接写入:
如 python dev/projects/sss/cron_t.py >>/data/logs/cron/cron_stout.log 2>&1
其中cron_t.py中已经封装了上述命令