Linux服务器实现定时任务

在我们希望实现能定时运行一个程序,比如定时从某网站上爬取内容,定时计算某些内容,汇总相关内容后,代码写好之后,不至于总需要人为来执行该程序,我们希望能够实现其自动运行,不需要人为干预。

总结了如下两种方法:

第一种方法实现起来极为容易,将整个程序段用while(true)包含起来,并用sleep函数实现定时运行,如下所示:

while(true){
	//待执行程序段
	sleep(1000000);
}

此种方法本质是程序始终在执行,只不过等待时间运行而已,其“暂停”时刻,也在占用内存,对系统资源是一种浪费,因此此种方式并不是很推荐。

第二种方法,与程序段本身无关,我们需要做的,是对服务器的一个配置文件的修改,即让服务器定时自动运行某个程序,此种方式减少了资源浪费

先说明怎么实现的,然后说明原理

对于Linux服务器,命令如下:

先进入服务器定时任务配置文件

crontab -e

然后当我想定时执行reptile.php程序时,在该文件中末行输入如下语句

0 7-23 * * * /usr/bin/php  /var/www/html/ReptileNews/reptile.php

/usr/bin/php 指的是服务器中php的环境位置,如果想运行java程序也可换成java的环境,后面也相应改成java文件了

每天7点到23点,每一个小时执行reptile.php程序

/usr/bin/php为我的服务器php环境所在目录,/var/www/html/ReptileNews/reptile.php是我的待执行程序详细路径

crontab文件格式

*           *        *        *        *           command
minute     hour     day     month     week         command
分          时       天       月       星期          命令

minute: 表示分钟,可以是从0到59之间的任何整数。
hour:表示小时,可以是从0到23之间的任何整数。
day:表示日期,可以是从1到31之间的任何整数。
month:表示月份,可以是从1到12之间的任何整数。
week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件

特殊字符

星号(*):代表所有可能的值,例如month字段如果是星号,则表示不论月,即每月

逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”。

中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”。

正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次

回过头来看我的每天7点到23点,每一个小时执行reptile.php程序的定时任务语句,0分钟,7点到23点,不论天,不论月,不论周,执行程序,也就是每天7点到23点执行reptile.php程序

希望能有所帮助!

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值