一:安装at
(1)配置yum仓库:以配置网络源举例:
先在/etc/yum.repos.d/ 目录下创建一个以.repo结尾的文件
vim /etc/yum.repos.d/aliyun.repo
写入可以在阿里云镜像站查找appstream和baseos的地址阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区进去点centos:
[appstream]
name = appstream
baseurl = https://mirrors.aliyun.com/centos-stream/9-stream/AppStream/x86_64/os/
gpgcheck = 0
[baseos]
name = baseos
baseurl = https://mirrors.aliyun.com/centos-stream/9-stream/BaseOS/x86_64/os/
gpgcheck = 0
(2)下载并安装at
yum install at
二,at(单一执行的例行性工作)
(1)at 命令详解:
命令格式: at [参数] [时间]
参数:
-m 当任务完成之后,即使没有标准输出,将给用户发送邮件
-l atq的别名,可列出目前系统上面的所有该用户的at调度
-d atrm的别名,可以取消一个在at调度中的工作
-v 使用较明显的时间格式,列出at调度中的任务列表
-c 可以列出后面接的该项工作的实际命令内容
-f 从文件中读取作作业
时间格式:
HH:MM 在今天的HH小时MM分钟执行,如果今天的这个时间点已经过了,则明
天执行
HH:MM YYYY-MM-DD 强制规定在某年某月的某一天的特殊时刻进行该工作
now + 2 minutes 从现在开始几分钟minutes, hours, days, or weeks
使用例子:
[root@localhost ~]# at now + 3 minutes //从现在开始,三分钟后执行什么
[root@localhost ~]# at 20:54 //20:54执行什么
[root@localhost ~]# at 20:55 2024-10-17 //2024年10月17日 20:55执行什么
进入at界面后按Ctrl D 结束输入
(2)at的相关服务文件:
黑白名单:
etc/at.allow,写在该文件的人可以使用at命令
/etc/at.deny,黑名单 写在该文件的人不可以使用at命令
注:1.两个文件如果都不存在,只有root能使用 2.如果不存在白名单,只存在黑名单,默认黑名单之外的人可以使用
#at工作调度对应的系统服务
[root@localhost ~]# systemctl status atd //启用at服务
#at的工作文件存放目录
[root@localhost ~]# ll /var/spool/at //当创建了一个at时,这个文件下会有相关文件记录
#at工作的日志文件
[root@localhost ~]# ll /var/log/cron //at的日志文件
三,crontab(循环执行的例行性工作)
(1)命令详解:
[root@localhost ~]# crontab --help
crontab: invalid option -- '-'
crontab: usage error: unrecognized option
Usage:
crontab [options] file
crontab [options]
crontab -n [hostname]
Options:
-u <user> define user //定义用户
-e edit user's crontab //编辑用户的crontab(默认是本账号用户)
-l list user's crontab //列出用户的 crontab
-r delete user's crontab //删除用户的crontab
-i prompt before deleting //在删除前提示
-n <host> set host in cluster to run users' crontabs
-c get host in cluster to run users' crontabs
-s selinux context
-V print version and exit //打印版本并推出
-x <mask> enable debugging //启用调试
使用例子:
//直接编辑这个文件
[root@localhost ~]# vim /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
//分 时 日 月 周 用户 执行的命令* * * * 3 touch file-'date "+\%Y-\%H-\%M"'.txt
也可以crontab -e 直接写入以上最后一行
意思是:每周三的每分钟创建一个file-当前时间.txt的文件
注意:%在crontab里面有特殊含义,如果有命令里面需要使用%,需要使用\转义
当日月与周同时存在时,他们两之间是或的关系,其他情况是与的关系例如:
1 * */7 * 1 wall hello 每个月每隔7天的一点,或者每周一1点,向当前系统所有打的终端输出hello