网络服务--例行性工作(at、cron)

在未来某个时间点执行任务

单一执行的例行性工作:仅处理执行一次就结束了

at

工作原理

提供这份单一例行工作的服务叫atd,使用at命令来进行部署

先确认权限:/etc/at.deny和/etc/at.allow

at.allow:允许操作的列表(用户)

at.deny:拒绝操作的列表(用户)

at命令去执行的时候:先判定是否将具备去权限,先去找 at.allow 这个文件,如果有这个文件,相和歌文件中所写的用户可以去执行at命令。如果这个文件(at.allow)不存在,那么去找at.deny,at.deny定义哪些用户是不能执行的。如果是空文件哪意味着所有人都具备执行权限。

执行at命令,新建任务时,任务被记录在/var/spool/at目录下

at命令操作

命令格式:at [参数] [时间]

参数:
-m  当任务完成之后,即使没有标准输出,将给用户发送邮件

        mail -> 邮件
 -l atq 的别名,可列出目前系统上面的所有该用户的at调度、

        list:列出任务
-d atrm 的别名,可以取消一个在at调度中的工作

        delete:删除任务
-v 使用较明显的时间格式,列出at调度中的任务列表
-c 可以列出后面接的该项工作的实际命令内容

        content:实际命令内容
-f 从文件中读取作作业

        file:将任务写入到文件,使用-f去读取

参数:一般都是时间

时间的表达形式:

HH:MM  在今天的HH小时MM分钟执行,如果今天的这个时间点已经过了,则明天执行

HH:MM YYYY-MM-DD  强制规定在某年某月的某一天的特殊时刻进行该工作

now + count time-units : now + 2 minutes 从现在开始几分钟minutes, hours, days, or weeks

实际执行的内容存储目录:/var/spool/at

使用at -c 任务编号 或者cat /var/spool/at/目录下的文件

注意:该文件在任务完成之后消失

练习

8月5号上午9:30 -》echo "learning rhce" > /root/my_at_task

at 9:30am 5 Aug

at> echo "learning rhce" > /root/my_at_task
at> <EOT>
job 8 at Sat Aug  5 09:30:00 2023

cron:循环执行的例行功能

首先crond这个服务提供的

crontab命令用来创建循环例行工作

和at相同都要去先确认权限

命令

crontab [选项][参数]

crontab命令

选项:

        -u:user只有root用户有权限为别的用户来创建任务

                普通用户智能为自己创建任务

        -l:列出cron任务

        -e:edit:编辑,就可以有增加、删除、修改的功能

        -r:全部删除

        -i:和-r选项一起使用,在删除功能时给确认提示:即是否要删除:y/n

crontab创建一个任务:即编辑一个文件:cron table

问题:应该在文件中写入什么内容

crontab -e :默认去帮当前登陆的用户创建任务

写入文件的内容是有一定格式要求的:

六个字段:字段间用空格分隔

5个时间字段(规定执行的周期)+1个command字段(任务)

时间字段:

        第一个字段:分钟 0-59

        第二个字段:小时 0-23

        第三个字段:月中日 0-31

        第四个字段:月份 0-12

        第五个字段:星期:0-7 0和7都表示星期天

        command字段:真正的任务

特殊符号

*:代表所有

-:代表是连续。例如:1-5,表示1到5

,:如果某一个字段有多个值那用都好来分割1-5另一种表现形式1,2,3,4,5

/:代表频率

vim /etc/cron

# 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

本文件有七个字段

前五个字段:时间字段

用户字段:以哪个yoghurt去执行

command字段:任务

 

另一种方式:如果一次要执行多个任务:run-parts的指令

run-parts后跟的是一个目录:目录可以存放多个脚本文件对应多个任务;

使用场景:

at:就单一例行工作:在维埃某一个时间点只执行一次的情况

cron:循环周期的去执行,不仅限于一次

        cron是重点,工作中使用较多

        备份任务:一般是每天系统最不繁忙的时间去执行

        检测任务:检测某些任务的可用性,或者磁盘以及内存使用率

                                如果服务不可以用,或者磁盘以及呢寄存使用超过阈值,会提供警告给管理员

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值