您的位置:首页 > 运维架构 > Linux

Linux系统定时任务

2015-09-19 11:23 459 查看
我们知道,在windows系统中有定时任务,在控制面板-管理工具-任务计划程序设置任务可以在指定的时间执行指定的程序或其他工作。那么在linux中也有这个功能,而支持这个功能的服务就是crond服务。在linux中这个服务是默认安装的,也是开机自启动的。

我们可以通过chkconfig --list |grep crond命令查看这个服务的启动情况。

在这里顺便说一下服务的启动情况,service 服务名 start 是启动服务,这是redhat支持的service命令,如果没有这个命令,可以直接找到脚本来启动。(顺便说一下,rpm包安装的服务可以使用chkconfig 服务名称 on设置自启动)

既然是crond服务来进行定时任务,那怎么使用呢?

那就要靠这个服务的命令了。

crondtab -l //查看定时任务

crondtab -e //编辑定时任务

crondtab -r //删除所有定时任务

通过crondtab -e编辑要做的任务,通过这个命令打开一个编辑器,然后输入要做的任务。例如:

*/1 * * * * echo m "eeee" >>/tmp/test 这个任务就是每分钟向/tmp/test文件中写入一遍“eeee”。

0 5 * * * /root/test.sh 这个任务就是每天凌晨五点执行这个脚本。

使用:wq保存后,可以使用crontab -l 就会列出这两个任务。

如果不想使用这些任务了,就可以使用crontab -r 命令全部删除。如果只想删除某一个,那当然是再使用crontab -e进去删掉不再使用的任务。

下面说一下定时的符号说明

* * * * * 这是定时命令。

第一个*表示每个小时的第几分钟 10 * * * * 这个代表的是每小时的第10分钟,而不是每隔10分钟。

第二个*表示小时(0-23)

第三个* 表示天数(0-31)

第四个*表示月份(1-12)

第五个*表示周几(0-7)0与7都是周日

*是任何时间

,表示不连续的时间 例如: 2,6,8 * * * * 表示每小时的第2,6,8分钟执行一遍。

-表示连续的时间 例如: 1-10 * * * * 表示每小时的1到10分钟

/表示每隔多久时间 例如: */10 * * * * 表示每隔10分钟

再举几个例子理解一下:

45 22 *** 在22点45分执行命令

0 17 * * 1 每周一的17点0分执行

0 5 1,15 * * 表示每个月的1号与15号的凌晨五点执行

40 4 * * 1-5 表示每周1至周5的凌晨4点40执行

*/10 4 * * * 每天凌晨4点每隔10分执行一次,也就是凌晨4点执行6次

0 0 1,15 * 1 意思是每个月的1号,15号或者是每周一 凌晨零点都执行一次。(注意:这里是或的关系,不是并的关系,也就是说不要理解成:在每个月的1号或者15号并且是周一才执行)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: