Linux每日学习(十六)--例行性工作调度

linux 例行性工作调度

  1. 工作调度种类:at,cron
    1. 例行性的,每隔一定周期来执行的计划,像每月的会员活动
    2. 突发性的,执行一次
    3. at:执行一次就结束调度的指令,需要atd服务支持才可以
    4. crontab:crontab指令设置的工作可以永远循环执行下去,循环时间:分、时、日、月、周等,需要cron服务可以生效
  2. 仅一次的工作调度 at
    1. 启动 /etc/init.d/atd start
    2. 运行方式:根据/etc/at.allow /etc/at.deny配置增加使用限制
      1. 先找寻 /etc/at.allow 这个文件,写在这个文件中的使用者才能使用 at ,没有在这个文件中的使用者则不能使用 at (即使没有写在 at.deny 当中);
      2. 如果 /etc/at.allow 不存在,就寻找 /etc/at.deny 这个文件,若写在这个 at.deny 的使用者则不能使用 at ,而没有在这个 at.deny 文件中的使用者,就可以使用 at 咯;
      3. 如果两个文件都不存在,那么只有 root 可以使用 at 这个指令。
    3. 配置运行单一工作调度
      1. at  -h 查看at支持的命令格式
      2. atq 列出at工作调度列表
      3. atq jobnumber 将第几个工作调度移除
      4. batch 系统空余时间执行,可在 CPU 工作负载小于 0.8 时才进行后续的工作调度
    4. at的工作特点:支持脱机工作
  3. 循环执行的例行性工作调度
    1. 使用设置:
      1. /etc/cron.allow: 将可以使用 crontab 的帐号写入其中,若不在这个文件内的使用者则不可使用 crontab;
      2. /etc/cron.deny: 将不可以使用 crontab 的帐号写入其中,若未记录到这个文件当中的使用者,就可以使用 crontab 。
    2. 配置任务文件:
      1. /etc/crontab
      2. /etc/init.d/*
      3. /var/spool/cron/用户名
      4. crontab -e
    3. 命令说明:
      1. crontab -l 列出所有的执行任务
      2. crontab -r (慎操作),删除所有的执行任务
      3. crontab -e 编辑执行的任务
      4. * * * * * base home/aa.sh

代表意义

分钟

小时

日期

月份

指令

数字范围

0-59

0-23

1-31

1-12

0-7(周的数字为 0 7 时为星期天)

执行指令

 

特殊字符

代表意义

*(星号)

代表任何时刻都接受的意思!举例来说,范例一内那个日、月、周都是 * 就代表着不论何月、何日的礼拜几的 12:00 都执行后续指令的意思!

,(逗号)

代表分隔时段的意思。举例来说,如果要下达的工作是 3:00 6:00 时,就会是: > 0 3,6 * * * command 时间参数还是有五栏,不过第二栏是 3,6 ,代表 3 6 都适用!

-(减号)

代表一段时间范围内,举例来说, 8 点到 12 点之间的每小时的 20 分都进行一项工作: > 20 8-12 * * * command 仔细看到第二栏变成 8-12 喔!代表 8,9,10,11,12 都适用的意思!

/n(斜线)

那个 n 代表数字,亦即是每隔 n 单位间隔的意思,例如每五分钟进行一次,则: > */5 * * * * command 很简单吧!用 * /5 来搭配,也可以写成 0-59/5 ,相同意思!

  1. cron最低检测限度:分
  2. 修改/etc/crontab配置文件格式:/etc/crontab 设置分为七栏,“分、时、日、月、周、执行者、指令”为其设置依据
  3. 注意事项:周与日月不可同时并行
    1. 30 12 11 9 5 root echo "just test"
    2. 错误认为是:9月11号为星期五可以执行
    3. 命令说明:可以每周五执行,也可每年的9月11号执行

4. 可唤醒停机期间的工作日任务:anacron

  1. 使用场景:执行的任务正好是在停机期间,定时任务执行无法执行
  2. anacron每个小时被crond执行一次,去检测相关调度任务是否被执行,如果有超时的工作调度,就执行该调度任务,执行完毕或无调度任务时,就停止。
  3. anacron是一支程序,不是服务
  4. anacron配置目录只有/etc/anacron
# /etc/anacrontab: configuration file for anacron

# See anacron(8) and anacrontab(5) for details.

SHELL=/bin/sh

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

MAILTO=root

# the maximal random delay added to the base delay of the jobs

RANDOM_DELAY=45 (执行任务前延迟随机的时间在执行,时间范围是0~45)

# the jobs will be started during the following hours only

START_HOURS_RANGE=3-22(指定了运行时间段)

#下面是执行计划

#period in days   delay in minutes   job-identifier   command

1 5   cron.daily    nice run-parts /etc/cron.daily

7 25  cron.weekly      nice run-parts /etc/cron.weekly

@monthly 45 cron.monthly     nice run-parts /etc/cron.monthly

period in days
轮回天数,表示任务多少天执行一次。

delay in minutes
表示启动Anacron和运行作业时间之间的延迟,单位为分钟. 当然前提是自最后一次运行之后所经过的时间超出了轮回天数。 但是它并不是作业真正运行的时间,真正运行的时间还需要加上RANDOME_DELAY中设置的随机分钟数。

job-identifier
作业的标识符。anacron在执行任务时会将日期写入/var/spool/anacron/$job-identifier文件中

command
实际运行的命令。这里的 run-parts 是一个运行指定目录中所有程序与脚本的命令,可以通过 man run-parts 来查看它的说明

anacron 配合 /etc/anacrontab 的设置,可以唤醒停机期间系统未进行的 crontab 任务

 5.小结:crontab 和at 都是定时去执行任务,时间过了就不执行了,anacron是“定期”去执行某一段周期的任务

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值