Linux上at单一执行例行性工作、crontab循环执行例行性任务和系统例行任务

本文基于Linux上CentOS 7版本进行演示

目录

一.单一执行例行性工作—at

1.单一执行例行性工作的含义、工作流程

2.at命令参数详解

二.循环执行例行性工作—crontab

1.循环性例行性工作的含义、工作流程

2.crontab命令参数详解 

三.系统执行例行性任务

1.系统执行例行性任务的流程

2./etc/crontab内参数解析


一.单一执行例行性工作—at

1.单一执行例行性工作的含义、工作流程

(1)单一执行例性工作也就是在从此刻开始的未来某个时间执行某项工作,只执行一次,执行完毕后此任务的生命周期结束。

(2)开启atd服务后,/etc目录下存在若干个以"at."开头的文件,在执行at任务时,会先访问"at.allow"文件(可以不存在,也可以手动创建)确认哪些用户被允许执行at,再访问"at.deny"确认哪些用户被拒绝执行at,最后再执行命令行。

注意:"at.allow"和"at.deny"在用户有特殊需要时写入,如果两个文件都为空则默认所有用户都可以执行,当这两个文件都不存在时候则只有root用户可以执行at。

例:在今天16:35向已登录用户发送hello广播,命令输入完成后按"CTRL +d"结束。

[root@sulibao ~]# at 16:35
at> wall hello!
at> <EOT>
job 5 at Sun Jan  1 16:35:00 2023

2.at命令参数详解

格式:at 指定参数 指定时间

(1)参数

命令参数参数说明
-m工作完成后(即使没有标准输出),给用户发送邮件
-l列出当前系统上面所有该用户的调度任务,等同于atq
-d取消一个at调度任务中的工作,等同于atrm
-v用较明显的时间格式列出at调度任务列表
-c列出某项调度任务的具体命令内容
-f从文件中读物调度任务

(2)时间格式 

时间格式格式说明
HH:MM默认是在今天的HH时MM分执行工作,如果这个时间今天已经过去则自动调度到明天这个时间
HH:MM Y-M-D规定在Y年M月D日的HH时MM分执行该工作
now+ x minutes/hours/days/weeks从此刻开始,经过x分钟/小时/天/周后执行该工作

二.循环执行例行性工作—crontab

1.循环性例行性工作的含义、工作流程

 (1)循环例行性工作是指在未来的时间段按指定周期执行调度工作。

 (2)crontab工作流程与at工作流程类似,判断完用户是否能执行crontab后再执行调度工作,使用crontab新建好调度任务后该任务被记录到/var/spool/cron中,同时使用crontab执行的工作可以在/var/log/cron日志文件中查找。

2.crontab命令参数详解 

 格式:crontab 参数

(1)参数

命令参数参数说明
-u指定某个用户再进一步进行添加/删除调度任务,crontab -u 用户 参数,只能root用户执行
-e编辑crontab调度工作内容
-l查阅crontab调度工作内容
-r删除所有crontab调度工作内容

 (2)编辑时按顺序的参数含义(共6个字段)

代表含义分钟小时日期月份周中天命令
取值范围0-590-231-311-120-7/0和7都表示周天需要执行的命令

注意:各参数之间用空格分隔开 

 (3)编辑时可以使用的特殊字符

特殊字符*-/
代表含义任何时刻用来分隔时段表示范围间隔频率,*/1就表示每一分钟执行一次任务

例:按要求规定crontab任务,在周一到周五的下午5点30提醒用户下课了。

[root@sulibao ~]# crontab -e
30 17 * * 1-5 wall Class is over!
[root@sulibao ~]# crontab -l
30 17 * * 1-5 wall Class is over!

三.系统执行例行性任务

1.系统执行例行性任务的流程

系统例行性任务通过修改/etc/crontab配置文件实现,crond服务读取文件内查找符合条件的内容进行执行,修改保存后即刻生效。

2./etc/crontab内参数解析

(1)已有参数信息

SHELL=/bin/bash:运行该任务的shell默认为bash。

PATH=/sbin:/bin:/usr/sbin:/usr/bin:在此指定执行命令的环境变量路径。

MAILTO=root:指任务执行信息将通过邮件发送给root用户。

[root@sulibao ~]# 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

(2)手动编辑参数信息

前5个字段和crontab -e的写法一样(空格隔开)

user-name:指定执行命令的用户

command to be executed:需要执行的任务命令行

[root@sulibao ~]# 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

例:每隔15分钟提醒各登录用户该喝水了

*/15 * * * * sulibao wall It's time to drink water!

Broadcast message from sulibao@sulibao (Mon Jan  2 13:23:01 2023):

It's time to drink water!

(3)当需要执行的任务有多个时,将任务放在目录里,利用run-parts指定任务目录

* * * * * root run-parts 任务目录

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

树下一少年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值