linux定时任务crond

时间:2021-10-03 22:15:58

本文内容是基于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 ~]# chkconfigauditd          0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭crond           0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭


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

[root@localhost ~]# service crond statuscrond (pid  1230) 正在运行...

当然,也可以使用ps来查看

[root@localhost ~]# ps -ef |grep crond |grep -v greproot       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 -lno 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 jack20 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点整开始执行。


本文出自 “喜哥的博客” 博客,请务必保留此出处http://xigestudy.blog.51cto.com/10045547/1843146