RedHat Linux 8 中系统定时任务及延迟任务
延迟任务
- 延迟任务的发起
命令 :at 时间 ,发起定时任务,发起后可以写入需要的命令
定时在22:58发起任务touch /mnt/test{1…5},然后按键 “Ctrl+d” 开启任务
watch监控文件/mnt,在22:58时就会自动执行任务
命令at 还可以加参数
参数 | 说明 |
---|---|
-l | 查看任务队列,任务有任务号 |
-c 任务号 | 查看任务内容 |
-r 任务号 | 取消任务 |
- -l 查看任务列队
- -c 查看任务内容
在展示的内容最后展示了任务命令 - -r 取消任务
-
当延迟任务有输出,输出会以邮件形式发送到任务发起者邮箱中
查看邮件查看命令是否已安装,如果没有,安装程序,在rhel8中邮箱命令是mailx
查看邮件服务程序是否安装启用在rhel8中邮箱程序时postfix
完成安装后,开启postfix程序
命令:mail -u 用户名 ,查看指定用户的邮件
命令: mail 用户名 ,给指定用户发邮件
mail 发用邮件命令,发用结束输入“.” 来表示结束,然后就可以查看到
然后我们测试at命令,写入temedatectl定时命名,可以看到到时间并没有显示输出到shell界面
但是在mail里看到是有输出的内容邮件,输入邮件号查看邮件内容
可以看到邮件内容就是timedatectl命令的输出内容,退出输入 “q” 。 -
at命令的控制
配置文件:/etc/at.deny ,控制黑名单,此名单中的人不能执行at命令
将redhat用户写入配置文件里,切换到redhat用户使用at命令被拒绝
配置文件:/etc/at.allow ,控制用户白名单,此文件默认不存在需要新建,当此文件存在/etc/at.deny不生效,当此文件存在系统普通用户默认不能执行at,只有在名单中的用户可以执行
定时任务
定时任务服务:crond.service
- crond 服务参数用法
参数 | 说明 |
---|---|
crontab -u root -e | 设定 |
crontab -u root -l | 查看 |
crontab -u root -r | 删除 |
定时任务存储路径:/var/spool/cron/用户名,不同用户设定的定时任务存放在,和用户名相同的文件里
首先我们可以用man 5 crontab 去查看设定的用法
这里展示了时间的设定和设定的形式
时间表示顺序是:分钟、小时、日、月、星期,例如:2月23号星期天10:20 == 20 10 23 2 7 。
设定形式就是:时间 任务/脚本 。
这里就展示了命令的用法
- 时间设定的特殊用法
时间设定 | 说明 |
---|---|
08-17 * * * * | 每天每小时08分-17分 |
08-17 * * * 3,5 | 每周3和周五每小时08分-17分 |
08-17/2 * * * 3,5 | 每周3和周五每小时08分-17分时间段每隔2分钟 |
08-17/2 10 * * 3,5 | 每周3和周五10点08分-17分时间段每4隔2分钟 |
08-17/2 10 5 * 3,5 | 每周3和周五及每月5号10点08分-17分时间段每隔2分钟 |
08-17/2 10 5 3 3,5 | 3月每周3和周五及3月5号10点08分-17分时间段每隔2分钟 |
“ * ” 表示不设定具体数值,重复执行
“ 08-17 ”,表示某个时间段
“ 3,5 ”,表示两个时间点
- 配置文件方式设定
配置文件的路径:/etc/cron.d
在配置文件里的写入文件属于系统级别cron,只有超级用户可操作,和上面的任务写法略有不同
系统级别的cron文件编辑:可以自己去编写一个文件,如 vim /etc/cron.d/test ,文件名自定义,编辑内容如下
每分钟都在 /mnnt/里建立文件file1
在/etc/下还存在一些特定的cron目录,如下
/etc/cron.daily/ ,每天执行任务
/etc/cron.hourly/ ,每小时执行任务
/etc/cron.monthly/ ,每月执行任务
/etc/cron.weekly/ ,每周执行任务
超级用户在设定时可以把需要的执行的任务放入相应的目录下去执行,在这些目录里编写的文件内容就直接写入执行的命令或需要运行的脚本即可,不需要再写时间和用户。 - 用户级别crond控制设定
编辑vim /etc/cron.deny ,控制cron用户名黑名单,写入用户名,禁止用户去使用定时任务功能;
编辑vim /etc/cron.allow ,控制用户白名单,此文件默认不存在需要新建,当此文件存在/etc/at.deny不生效,当此文件存在系统普通用户默认不能执行at,只有在名单中的用户可以执行;
这里两个文件用法就类似于 at 命令的用户控制了。