第9课:定时任务

crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程
定时任务可以随意设定时间,执行某段代码,一般用于一些不能直接展示,需要计算,但实时计算代价比较高昂的场景
在linux中重启crontab服务: /etc/init.d/crond  restart
默认编写的crontab文件会保存在 /var/spool/cron/用户名   例如: /var/spool/cron/roger
crontab -l 查看当前的服务   crontab -e 编辑当前运行服务  -r : 删除目前的时程表

crontab规则:
f1 f2 f3 f4 f5 program
其中 f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天。program 表示要执行的程序。
当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程序,其馀类推
当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其馀类推
当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其馀类推
当 f1 为 a, b, c,... 时表示第 a, b, c,... 分钟要执行,f2 为 a, b, c,... 时表示第 a, b, c...个小时要执行,其馀类推

例:
*/10 * * * * /home/httpd/crontab/pre_10min.sh  每十分钟运行一次
10 */1 * * * /home/httpd/crontab/pre_1hour.sh  每小时运行一次
0 1 * * * /usr/local/php/bin/php /home/httpd/crontab/godeye.php  每天凌晨1点运行PHP文件

定时任务还有另外一个用途:进程守护
当一个循环执行的服务脚本跑起来之后,为了防止中断,可以设置分10分钟执行一个检查进程的shell程序,发现脚本断掉了,就重启进程
这里也给出一个检查进程的完整的shell脚本,以防不时之需
#!/bin/sh
count=`ps -ef | grep godeye | grep -v grep |wc -l`
#echo $count
if [ 0 == $count ];then
    nohup php /home/www/serv/godeye.php  >/dev/null 2>&1 &
fi