linux 7启用crontab,centos 7下计划任务详解之crontab

计划任务包括两种类型:

1、一次性计划任务 :未来某个时间执行一次指定任务。

2、周期性计划任务 :每到指定时间点就执行指定的任务,周期性重复执行。

一次性计划任务,常用有两个命令都可以实现此功能:at 、 batch

周期性计划任务,常用主要有有一个命令: crontab

本篇主要讲解crontab命令详细用法:

特别注意:

1、crontab计划任务的执行结果都会以邮件形式告知到执行任务的用户,可以使用mail命令查看相应邮件。

2、如果crontab计划任务中执行的命令是后安装添加的,使用该命令时一定要跟完整路径,因为如果该命令不在cron的PATH变量中,会提示找不到该命令导致任务无法正常执行(建议都加上完整路径,使用whereis命令查询)!

1、crontab安装包

centos 7.4最小化安装已经包含的cron的包,有以下三个:

[root@imzcy ~]# rpm -qa |grep cron

cronie-anacron-1.4.11-17.el7.x86_64

crontabs-1.11-6.20121102git.el7.noarch

cronie-1.4.11-17.el7.x86_64

[root@imzcy ~]#

1

2

3

4

5

[root@imzcy~]# rpm -qa |grep cron

cronie-anacron-1.4.11-17.el7.x86_64

crontabs-1.11-6.20121102git.el7.noarch

cronie-1.4.11-17.el7.x86_64

[root@imzcy~]#

cronie:主程序包,提供了crond守护进程及相关辅助工具;

cronie-anacron:cronie的补充程序;用于监控cronie任务执行状况;如cronie中任务在过去该运行的时间点未能正常运行,则anacron会随后启动一次此任务。

crontabs:包含CentOS提供系统维护任务

2、任务类型:

2.1、系统cron任务:系统维护作业(直接编辑/etc/crontab文件新增计划任务作业也能实现执行系统级的计划任务,格式和crontab -e一样)

[root@imzcy ~]# cat /etc/crontab

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root

# For details see man 4 crontabs

# Example of job definition:

# .----------------- hour (0 - 23)

# | | .---------- day of month (1 - 31)

# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...

# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat

# | | | | |

# * * * * * user-name command to be executed

[root@imzcy ~]#

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

[root@imzcy~]# cat /etc/crontab

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root

# For details see man 4 crontabs

# Example of job definition:

# .----------------- hour (0 - 23)

# |  |  .---------- day of month (1 - 31)

# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...

# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat

# |  |  |  |  |

# *  *  *  *  * user-name  command to be executed

[root@imzcy~]#

2.2、用户cron任务:使用crontab命令

上面是定义系统cron所以需要指定以哪个用户身份来运行后面命令;但是我们如果定义用户cron本身就是针对指定用户来创建的,就不需要指定以哪个用户身份来运行了。

crontab格式:

* * * * * command to be executed

分 时 日 月 周 执行命令

1

2

*****commandtobeexecuted

分时日月周执行命令

crontab常用选项:

-l :列出所有任务

-u :指定操作的用户(仅root可运行,代为指定用户管理cron任务)

-e :编辑任务

-r : 移除所有任务

-i : 同-r一同使用,以交互式模式让用户有选择地移除指定任务

1

2

3

4

5

-l:列出所有任务

-u:指定操作的用户(仅root可运行,代为指定用户管理cron任务)

-e:编辑任务

-r:移除所有任务

-i:同-r一同使用,以交互式模式让用户有选择地移除指定任务

时间表示法:

(1)特定值:

给定时间点有效取值范围内的值;

(2)*

给定时间点上有效取值范围内的所有值;

表示“每”,在分上表示每分钟,在小时上表示每小时

(3)离散取值: ,

#,#,#

(4)连续取值: -

#-#

(5)在指定时间范围上,定义步长:

/#: #即为步长

*/3 如果在分钟上,表示每3分钟执行一次。

1

2

3

4

5

6

7

8

9

10

11

12

(1)特定值:

给定时间点有效取值范围内的值;

(2)*

给定时间点上有效取值范围内的所有值;

表示“每”,在分上表示每分钟,在小时上表示每小时

(3)离散取值:,

#,#,#

(4)连续取值:-

#-#

(5)在指定时间范围上,定义步长:

/#: #即为步长

*/3如果在分钟上,表示每3分钟执行一次。

3、创建用户cron任务(三种方法)

3.1、直接执行crontab -e命令即可为当前登入用户编辑创建计划任务(和使用vi编辑文件一样,最后使用wq保存退出即可)

[root@imzcy ~]# crontab -e

no crontab for root - using an empty one

*/10 * * * * /usr/bin/echo "hello world!"

~

~

"/tmp/crontab.C1l0Uo" 1L, 42C written

crontab: installing new crontab

[root@imzcy ~]#

1

2

3

4

5

6

7

8

[root@imzcy~]# crontab -e

nocrontabforroot-usinganemptyone

*/10****/usr/bin/echo"hello world!"

~

~

"/tmp/crontab.C1l0Uo"1L,42Cwritten

crontab:installingnewcrontab

[root@imzcy~]#

root用户可以加-u选项,为指定用户创建计划任务。

[root@imzcy ~]# crontab -u zcy -e

1

[root@imzcy~]# crontab -u zcy -e

3.2、编辑cron计划任务文件来创建任务

正常我们通过crontab -e命令创建的计划任务,都会记录在/var/spool/cron/目录下以用户名为名称的文件中。所以我们直接编辑该文件也能起到同样的效果(当然只有root用户有权限直接在这个目录下进行读写)

3.2.1 首先查看当前用户已定义的任务

[root@imzcy ~]# crontab -l

*/10 * * * * /usr/bin/echo "hello world!"

[root@imzcy ~]#

1

2

3

[root@imzcy~]# crontab -l

*/10****/usr/bin/echo"hello world!"

[root@imzcy~]#

3.2.2 查看计划任务文件

[root@imzcy ~]# ll /var/spool/cron/

总用量 4

-rw-------. 1 root root 42 9月 9 19:20 root

[root@imzcy ~]#

1

2

3

4

[root@imzcy~]# ll /var/spool/cron/

总用量4

-rw-------.1rootroot429月919:20root

[root@imzcy~]#

3.2.3 编辑root用户计划任务文件,新增一行内容

[root@imzcy ~]# vi /var/spool/cron/root

*/10 * * * * /usr/bin/echo "hello world!"

*/5 * * * * /usr/bin/echo "test2"

~

"/var/spool/cron/root" 2L, 76C written

[root@imzcy ~]#

1

2

3

4

5

6

[root@imzcy~]# vi /var/spool/cron/root

*/10****/usr/bin/echo"hello world!"

*/5****/usr/bin/echo"test2"

~

"/var/spool/cron/root"2L,76Cwritten

[root@imzcy~]#

3.2.4 再使用crontab -l查看root用户计划任务,发现已经增加一个

[root@imzcy ~]# crontab -l

*/10 * * * * /usr/bin/echo "hello world!"

*/5 * * * * /usr/bin/echo "test2"

[root@imzcy ~]#

1

2

3

4

[root@imzcy~]# crontab -l

*/10****/usr/bin/echo"hello world!"

*/5****/usr/bin/echo"test2"

[root@imzcy~]#

3.3、从文件中导入cron任务(格式要正确,并且会覆盖当前cron任务)

3.3.1 创建一个root.cron的文件,按指定格式添加一行内容

[root@imzcy ~]# vi root.cron

10 * * * * /usr/bin/echo "test"

[root@imzcy ~]#

1

2

3

[root@imzcy~]# vi root.cron

10****/usr/bin/echo"test"

[root@imzcy~]#

3.3.2 使用crontab命令并后面跟上刚才创建的文件(如果格式正常,则会覆盖导入其中的计划任务)

[root@imzcy ~]# crontab root.cron

1

[root@imzcy~]# crontab root.cron

3.3.3 再查看用户的计划任务,发现已经发生改变

[root@imzcy ~]# crontab -l

10 * * * * /usr/bin/echo "test"

[root@imzcy ~]#

1

2

3

[root@imzcy~]# crontab -l

10****/usr/bin/echo"test"

[root@imzcy~]#

3.3.4 root用户也可以加-u选项为指定用于导入计划任务文件

[root@imzcy ~]# crontab -u zcy root.cron

[root@imzcy ~]# crontab -u zcy -l

10 * * * * /usr/bin/echo "test"

[root@imzcy ~]#

1

2

3

4

[root@imzcy~]# crontab -u zcy root.cron

[root@imzcy~]# crontab -u zcy -l

10****/usr/bin/echo"test"

[root@imzcy~]#

4、执行时间示例

4.1 每天的5点21分执行任务

21 05 * * * /usr/bin/echo "www.imzcy.cn"

1

2105***/usr/bin/echo"www.imzcy.cn"

4.2 每个月8号的5点21分执行任务(指定日期的时候,前面时和分也要填,不然只在日期上写的后,前面为时和分都是*,就相当于那一天的每分钟都执行任务)

21 05 08 * * /usr/bin/echo "www.imzcy.cn"

1

210508**/usr/bin/echo"www.imzcy.cn"

4.3 每隔6分钟执行任务

*/6 * * * * /usr/bin/echo "www.imzcy.cn"

1

*/6****/usr/bin/echo"www.imzcy.cn"

4.4 每小时的15,35,55分的时候执行任务

15,35,55 * * * * /usr/bin/echo "www.imzcy.cn"

1

15,35,55****/usr/bin/echo"www.imzcy.cn"

4.5 每小时的30-40内每分钟执行一下任务

30-40 * * * * /usr/bin/echo "www.imzcy.cn"

1

30-40****/usr/bin/echo"www.imzcy.cn"

4.6 每隔10秒执行下任务

* * * * * for i in `seq 1 6` ; do /usr/bin/echo "www.imzcy.cn" > /dev/pts/0 ; sleep 10 ; done

1

*****foriin`seq16`;do/usr/bin/echo"www.imzcy.cn">/dev/pts/0;sleep10;done

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值