很多时候需要代码定时定点去执行,比如说写了一段爬取网站信息的代码,想每天早上进行一次爬取,就需要为系统添加计划任务。而在Linux系统下,系统计划任务可以通过crond来实现。那么crond是什么呢,以下摘录自网络:
说白了就是,我们可以通过自己编写定时规则来实现一些定时任务
下面先介绍一下crond的基本命令:
crond status:查看crond服务状态
crond start:启动crond服务
crond stop:关闭crond服务
crond restart:重启crond服务
crontab -u:设定某个用户的crond服务
crontab -l:列出某个用户的crond内容
crontab -r:删除某个用户的crond服务
crontab -e:编辑某个用户的crond服务内容
*有时在启动crond时会出现crond: can't lock /var/run/crond.pid, otherpid may be 15340: Resource temporarily unavailable
的提示,只需用killall crond
结束所有crond服务再重新启动即可
接下来是crond编写格式: crond格式
比如:
0 1 * * * /bin/echo 'test' > /home/test.log
表示每天01:00打印字符串‘hello world!’到/home/test.log文件中
又比如:
*/5 * * * * /home/test.sh
表示每隔5分钟执行/home/test.sh脚本
再比如:
0 1,2 * * 3 /home/test.sh
表示每周3的01:00和02:00分别执行一次/home/test.sh脚本
crond定时任务添加规范:
- 添加注释
- 定时任务最好以脚本(.sh)的形式执行
- 执行shell脚本任务前加
/bin/sh
- 所有路径都要写全路径(包括应用程序的路径),比如要定时执行python程
序,执行命令不能简单写作python ***.py
,python程序的完整路径也要写- 编写执行脚本要注意不要和window混用,要在纯linux环境下编写,否则会
因平台保存文件格式不同出现-bash: ./***.sh: /bin/bash^M: bad interpreter: No such file or directory
的错误- 编写好的执行脚本最好先在命令行验证一下,在添加进计划任务中
- 定时任务命令或脚本结尾加>/dev/null 2>&1
完整的计划任务实例:
crond添加定时任务
0 1 * * * /home/test.sh
test.sh: #遇到权限问题执行chmod u+x test.sh
#!/bin/sh /usr/bin/python /home/test.py > /dev/null 2>&1