首页 > 代码库 > Linux的定时任务

Linux的定时任务

分两种:一次性的定时任务、周期性的定时任务。

一次性的定时任务,又称at定时任务,命令为atd ,这里d是deamon的首字母,守护的意思,指守护进程;其实很多程序都是以d结尾,如httpd、memcached等等。

一般Linux都默认安装了atd服务,可以通过 chkconfig --list | grep at来查看(据说CentOS 7已经改变,需要使用systemctl来查看,自行查找),或者,使用service atd status来查看。

 

 

 

 

周期性的定时任务,crontab(使用quartz的童鞋应该很眼熟,其实就是从这里来的)。

Linux中crontab定时任务其实分两大类:crontab -e自行编辑的(仅限于当前用户,root除外)、系统的crontab定时任务(包括annacron)。

crontab -e会进入一个vi界面,在里面可以设置执行的方式和任务,格式如下:

* * * * * 任务

5个星号,依次代表分钟、小时、天、月、周。

每个星号都可以使用逗号拼接多个数字,或者使用短划线代表范围,还可以使用斜线和数字N代表每N段时间。

如:

1,5,7 * * * * 任务                  指每个小时的1、5、7分钟都会执行一次任务

3-10 * * * * 任务                   指每个小时的3到10分钟每分钟都会执行一次任务

*/10 * * * * 任务                  指每隔10分钟就会执行一次任务

必须说明的是:最小时间单位为分钟,最大时间单位为月,因此不支持秒和年的概念。

另外,如果同时指定了天和周,那就是并集,而非交集!就是说每个天时间都会触发,而非同时满足才会触发。

 

crontab -l 列出当前用户所有的crontab定时任务。

crontab -r 移除当前用户所有的crontab定时任务。

 

 

未完待续

Linux的定时任务