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

linux定时任务crond

2016-08-27 00:22 204 查看
本文内容是基于CentOS 6.5,如果是其它版本(如:CenOS 7.0),命令可能会有区别。
[root@localhost ~]# cat /etc/redhat-release
CentOS release 6.5 (Final)


一、crond服务:定时任务是由crond服务提供的。

1、crond服务默认情况下是开机启动的。可以使用命令chkconfig或者chkconfig --list来查看。
[root@localhost ~]# chkconfig
auditd          0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭
crond           0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭


2、查看crond服务是否在运行。

[root@localhost ~]# service crond status
crond (pid  1230) 正在运行...
当然,也可以使用ps来查看
[root@localhost ~]# ps -ef |grep crond |grep -v grep
root       1230      1  0 23:04 ?        00:00:00 crond


3、启动crond服务
[root@localhost ~]# service crond start
正在启动 crond:                                           [确定]
4、停止crond服务
[root@localhost ~]# service crond stop
停止 crond:                                               [确定]
5、重启crond服务

[root@localhost ~]# service crond restart
停止 crond:                                              [确定]
正在启动 crond:                                           [确定]


二、创建、查询、删除定时任务

1、为用户设置定时任务使用crontab命令,常用的命令选项有:
-l(该字母是小写的L) 列出已设置的定时任务
-e 编辑定时任务
-r 删除当前用户所有定时任务
-u 与前面3个选项配合使用,表示列出、编辑、删除指定用户的定时任务

在没有创建任何定时任务前,使用crontab -l命令查看时,会提示该用户没有定时任务。
[root@localhost ~]# crontab -l
no crontab for root


使用crontab -e命令会打开一个crontab的编辑界面,该界面就是vi编辑文本的界面。我们在里面按照标准的格式添加内容即可。

crontab -r会删除所有的定时任务,请谨慎使用。一般来说,平时增加、删除一个定时任务时,使用crontab -e命令进入编辑界面编辑增加或者删除就可以了。

-u选项是指定用户,当用户为当前用户时,该选项是省略掉的。因为我们创建任务时大多是针对当前用户,所以我们看见大多数情况下是没有使用-u选项的。下面是为用户jack创建一个定时任务,并查看定时任务。
[root@localhost ~]# crontab -e -u jack
[root@localhost ~]# crontab -l -u jack
20 12 * * * echo "hello"


2、定时任务的配置说明

任务的标准格式为:
* * * * * [command]
位置含义范围
第一个“*”一小时当中的第几分钟0-59
第二个“*”
一天当中的第几个小时0-23
第三个“*”
一个月当中的第几天1-31
第四个“*”
一年当中的第几个月1-12
第五个“*”
一周当中的星期几0-7(0和7都代表星期日)
第六段[command]要执行的命令
前面5个星号,使用“分时日月周”这5个字来记忆。

举例:
22 12 * * * echo "hello" 表示每天的12点22分打印hello到终端

3、注意事项:
(1)除非有特殊要求,否则日、月最好不要和周同时使用,容易把自己绕晕了。
(2)整点的表示,要在分钟处写0,而不是写*,*表示所有。例如:* 1 * * *每天1点里的每1分钟都执行一次,如果想让1点整执行,要写成0 1 * * *才行。
(3)如果想表示多久执行一次,使用*/n来表示,例如:*/5 1 * * *表示1点里每5分钟执行一次。
(4)这里没有提供表示年的位置。其实仔细想一想,我们如果把表示月份的星号设置为具体的一个数之后,就相当于隔了一年。例如 0 1 1 9 *表示每年的9月1日1点整开始执行。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息