root@server \~#watch -n 1 ls /tmp #实时监控tmp,每1s刷新
root@server \~#dnf provides /bin/at #查询安装at服务后的包名
一、单一执行的例行性任务--at
root@server \~# dnf install at -y #安装at服务
root@server \~# systemctl start atd #开启atd服务
root@server \~# systemctl enable --now atd # 设置立即开机启动
root@server \~# systemctl status atd # 查看atd服务状态
at命令(at -参数 日期时间)
-m:当任务完成后,即使没有标准输出,也会给用户发送邮件
-l:查看所有用户的at任务
-d:删除任务
-v:使用时间格式列出任务
-c:列出任务之后的命令内容
-f:读取文件
#点击ctrl+d 结束交互性界面
root@server \~# echo "echo 'hello again' >> at.txt" | at now +1 minute #通过管道符执行命令
at.allow(白名单):写在该文件中用户才可执行at命令,可以无视黑名单
at.deny(黑名单):写在该文件中的用户不能使用at命令
若at.allow和at.deny都不存在则只有root用户可以使用at命令
二、循环执行的例行性任务--crontab
crontab -参数
-l:查看任务
-e:编辑任务(编写任务时写绝对路径)
-i:删除任务
-r:删除任务
-u:执行任务,指定用户
root@server \~#crontab -u root -e #指定root用户执行命令
cron.d # 系统定时任务
cron.daily # 每天的任务
cront.deny # 定时任务黑名单
cron.hourly # 每小时执行的任务
cron.monthly # 每月的定时任务
crontab # 定义任务管理文件
cron.weekly # 每周的定时任务
练习
- 在4月份的周一到周三的上午11点执行脚本
0 11 * 4 1-3 /usr/bash xxxx
- 每天早上7点到上午11点且每2小时执行一次
0 7-11/2 * * *
- 每天6点执行脚本
0 6 * * *
- 每周六凌晨4点执行
0 4 * * 6
- 每周六凌晨4点05执行
5 4 * * 6
- 每天8:40执行
40 8 * * *
- 在每天10:31且每隔2小时执行一次
31 10/2 * * *
- 每周一到周五2:00执行
0 2 * * 1-5
- 每周一到周五8:00和9:00执行
0 8,9 * * 1-5
- 每天10:00,16:00执行
0 10,16 * * *