Linux基础教程:任务计划和周期性任务-演道网

本网站用的阿里云ECS,推荐大家用。自己搞个学习研究也不错

<

div>

[root@localhost ~]# 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:
# .---------------- minute (0 - 59)
# |  .------------- 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
 
注意:
(1)每一行定义一个周期性的任务,共七个字段:
     *  *  *  *  *:定义周期性的时间
     user-name:运行任务的用户身份
     command to be executed:任务
(2)此处的环境变量不同于用户登录后获得的环境,因此建议使用绝对路径,或者之定义PATH路径
(3)执行结果邮件发送给MAILTO指定的用户。
 
周期时间表示法则:
(1)特定值
          给定时间点有效取值范围内的值
          注意:day of week 和day of mouth一般不同时使用
(2)*
          给定时间点有效取值范围内的所有值,表示每...
(3)离散取值
           在时间点上使用逗号分隔的多个值:#,#,#
(4)连续取值
           在时间点上使用逗号分隔的多个值:#-#
(5)在指定时间上,定义步长
           /#,#即步长
 
注意:
(1)指定的时间点不能被步长真出时,其意义将不复存在;
(2)最小时间单位为分钟,想完成秒级人物,的需要额外借助其他的机制。

示例:

(1) 3 * * * *:每小时执行一次;每小时的第3分钟;
(2) 3 4 * * 5:每周执行一次;每周5的4点3分;
(3) 5 6 7 * *:每月执行一次;每月的7号的6点5分;
(4) 7 8 9 10 *:每年执行一次;每年的10月9号8点7分;
(5) 9 8 * * 3,7:每周三和周日的8点7分
(6) 0 8,20 * * 3,7:每周三和周日的20点和20点8分执行;
(7) 0 9-18 * * 1-5:每周一到周五的早上9点到18点
(8) */5 * * * *:每5分钟执行一次某任务;
 
当给用户创建一个周期性的任务的时候,会在/var/spool/cron生成一个与其用户名相同的配置文件。
下面就来讲一下crontab命令:
 
语法:crontab  [OPTIONS]
OPTIONS:
    -e:编辑任务
    -l:列出所有任务
    -r:移除所有的任务,即删除/var/spool/cron/USERNAME文件
    -i:在使用-r选项移除所有任务提示用户
    -u user:root用户可为指定用户管理cron任务
 
下面我们就来举个例子吧!
比如每分钟打印一个echo:

[frank@localhost ~]$ crontab -e
no crontab for frank - using an empty one

* * * * * echo "hello"

列出所有的任务:

[frank@localhost ~]$ crontab -l
* * * * * echo "hello"

移除所有的任务:

[frank@localhost ~]$ crontab -r
[frank@localhost ~]$ crontab -l
no crontab for frank

运行的结果以邮件通知给当前的用户,如果拒绝接受邮件,可以使用输出重定向:

 COMMAND > /dev/null

注意:定义COMMAND时,如果命令需要用到%,需要对其转义,但放置于单引号中的%不用转义。

crond服务读取配置文件的位置:

一般来说,crond预设有三个地方会有执行的脚本配置,他们分别是:

/etc/crontab

/etc/cron.d/*

/var/spool/cron/*

前两个是与系统运作有关系,最后一个主要用户用自己。

下面我们来看一下/etc/cron.d/目录下的文件吧!

[root@localhost ~]# ll /etc/cron.d/
total 4
-rw-r--r--. 1 root root 128 Mar 31  2016 0hourly
[root@localhost ~]# cat /etc/cron.d/0hourly 
# Run the hourly jobs
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
01 * * * * root run-parts /etc/cron.hourly  #run-parts脚本会在大约5分钟内随机选择一个时间去执行/etc/cron.hourly内的所有文件
 
[root@localhost ~]# cat /etc/cron    #细心的朋友会发现etc目录下还有很多关于crond的文件
cron.d/       cron.daily/   cron.deny     cron.hourly/  cron.monthly/ crontab       cron.weekly/ 

思考:某任务在指定的时间因关机未能执行,下次开机会不会自动执行?

答案:不会!.

如果期望某时间因故未能按时执行,下次开机后无论是否到了相应时间点都要执行一次,可使用anacron实现, /etc/ 底下其实还有 /etc/cron.daily/, /etc/cron.weekly/, /etc/cron.monthly/,那三个目录是代表每日、每周、每月各执行一次的意思,跟 /etc/cron.hourly/ 不太一样的是,这三个目录是由 anacron 所执行的,而 anacron 的执行方式则是放在/etc/cron.hourly/0anacron 里面的。

最后的总结

<

ul>

  • 个人的行为推荐使用 crontab -e:如果你只是根据自己的个人需求来运行周期性的任务,而不想被其他的用户看到,建议使用crontab -e,/etc/crontab文件是大家都能读取的哦!
  • 系统维护管理推荐使用vim /etc/crontab:如果你的这个周期性的任务是系统几倍的,而且非常的重要,丼/div>转载自演道,想查看更及时的互联网产品技术热点文章请点击http://go2live.cn

    未经允许不得转载:演道网 » Linux基础教程:任务计划和周期性任务-演道网

  • 赞 (0)
    分享到:更多 ()

    评论 0

    评论前必须登录!

    登陆 注册