1、最近写了一个爬虫放在了服务器上,想让他每天定时去采集更新数据。百度了很久终于摸清了centos下设置定时任务。
2、我们需要先确定服务器安装了python3 与 crontab。python3在centos7的安装我前面有写过。crontab 默认是安装了的。可以直接输入crontab查看是否安装。
在说crontab之前我要先给不熟悉linux的小伙伴说一下。liunx下默认的文本编辑软件是vi。这是一个命令文本编辑软件。具体操作可以自行百度了解。
首先了解crontab命令:
图是网上找的。从图上可以看出前面5个值来设置时间。后面是跟的命令。
例:
30 21 * * * /etc/init.d/nginx restart //每晚的21:30重启 nginx。
45 4 1,10,22 * * /etc/init.d/nginx restart //每月1、 10、22日的4 : 45重启nginx。
10 1 * * 6,0 /etc/init.d/nginx restart //每周六、周日的1 : 10重启nginx。
0,30 18-23 * * * /etc/init.d/nginx restart //每天18 : 00至23 : 00之间每隔30分钟重启
1、这里需要注意第一个分钟一定要设置数字。否则如果它是*。它会每分钟都执行。
2、如果用到环境变量时需要带上完整路径。
例:
0 7,13 * * * /usr/bin/python3 /www/wwwroot/dsgdm.net/pachong/Main.py
每天的7点与13点执行/www/wwwroot/dsgdm.net/pachong/Main.py。如果没有前面的/usr/bin/python3就会无法执行。
可能上面的看懵逼了。没关系。接下来一步一步我们开始添加一个任务。
crontab -e
输入上面的命令进入任务编辑。这时启动的是vi命令编辑器
按a进入编辑模式。
输入
0 7,13 * * * /usr/bin/python3 /www/wwwroot/dsgdm.net/pachong/Main.py
按下esc或者ctrl + c 然后按下shift+q 这时提示你输入命令。输入:wq 。w是保存。q是退出。
添加成功后显示
crontab: installing new crontab
这时基本就完成了。但是我们并不知道它到时间到底执行了没有。怎么办呢。我们可以让python的print函数输出成日志。
这样就知道脚本到底执行了没法。方法是:
0 7,13 * * * /usr/bin/python3 /www/wwwroot/dsgdm.net/pachong/Main.py>>/home/qin.txt
这样就会在home文件夹下创建qin.txt。你脚本中的print都会写入到这个文件。
如果遇到命令可以启动,但是定时任务却不能正常启动,多数原因是运行环境问题。可以尝试将目录切换到程序目录,再执行。例如:
0,30 * * * * cd /opt/huanyu/ && /usr/bin/python3 ZheJiangHuanYu.py>>/opt/huanyu/out.log