分两种:一次性的定时任务、周期性的定时任务。
一次性的定时任务,又称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定时任务。
未完待续