at命令
在指定的日期、时间点自动执行预先设置的一些命令操作,属于一次性计划任务
服务脚本名称:/etc/init.d/atd
设置格式:at [HH:MM] [yyyy-mm-dd] 小时分钟,年月日
服务进程atd
为了安全问题,不是所有人都可以进行at工作调度。我们可以利用/etc/at.allow和/etc/at.deny这两个文件来进行at的使用限制。at的实际工作过程如下:
先寻找/etc/at.allow这个文件,写在这个文件的用户才能使用at;如果/etc/at.allow不存在,就寻找/etc/at.deny这个文件,写在该文件的用户不能使用at;如果两个文件都不存在,那么只有root可以使用at命令。
在rhel里面,由于假设系统上的所有用户都是可信任的,因此系统会保留一个空的/etc/at.deny文件,意思是允许所有人使用at命令,如果你想设置拒绝某人使用at命令,你可将该用户写入/etc/at.deny(格式为一行代表一个用户)
一、定时任务
1.输入at + 时间
2.输入要执行的命令
3.按CTRL+D结束输入
[root@server_1 ~]# at 13:14
at> reboot now
at> <EOT>
job 3 at Sun May 26 13:14:00 2019
[root@server_1 ~]# Connection to 192.168.19.101 closed by remote host.
Connection to 192.168.19.101 closed.
二、倒计时任务
三分钟后给登陆的该用户发送消息
[root@server /]# at now + 1 minutes
at> wall hello!
at> <EOT>
job 5 at Thu Nov 21 17:27:00 2019
[root@server /]#
Broadcast message from root@server (Thu Nov 21 17:27:00 2019):
hello!
corntab命令
1.按照预先设置的时间周期(分钟、小时、天……)重复执行用户指定的命令操作,属于周期性计划任务
循环执行的例行性工作调度是由crond这个系统服务来控制的。同样,我们也可以限制使用crontab的用户账号。
和at命令一样,为了安全问题,不是所有人都可以进行corntab工作调度
/etc/cron.allow 该文件内的用户可使用crontab
/etc/cron.deny 该文件内的用户不可使用crontab
同at命令工作过程一样
先寻找/etc/cron.allow这个文件,写在这个文件的用户才能使用crontab;如果/etc/cron.allow不存在,就寻找/etc/cron.deny这个文件,写在该文件的用户不能使用crontab;如果两个文件都不存在,那么只有root可以使用crontab命令。
在rhel里面,由于假设系统上的所有用户都是可信任的,因此系统会保留一个空的/etc/cron.deny文件,意思是允许所有人使用crontab命令,如果你想设置拒绝某人使用crontab命令,你可将该用户写入/etc/cron.deny(格式为一行代表一个用户)
2.root用户可以管理指定用户的计划任务,普通用户只能管理自己的计划任务
3.管理cron计划任务
编辑计划任务:crontab -e [-u 用户名]
查看计划任务:crontab -l [-u 用户名]
删除计划任务:crontab -r [-u 用户名]
4.时间格式,这里需要注意和date命令的区别|
crontab | 分 | 时 | 日 | 月 | 周 | 命令 |
---|---|---|---|---|---|---|
date | 月 | 日 | 时 | 分 | 年 | .秒 |
例如:
[root@server ~]# date 112415522019.20
Sun Nov 24 15:52:20 CST 2019
5.时间数值的特殊表示方法
* 表示该范围内的任意时间
, 表示间隔的多个不连续时间点
- 表示一个连续的时间范围
/ 指定间隔的时间频率
6.应用示例
0 17 * * 1-5 周一到周五每天17:00
30 8 * * 1,3,5 每周一、三、五的8点30分
0 8-18/2 * * * 8点到18点之间每隔2小时
0 * */3 * * 每隔3天
示例1,每天21点03分将时间写入/tmp/date.txt
注意命令要写完整路径
1.编辑
[root@server_1 ~]# crontab -e
03 21 * * * /bin/date >> /tmp/date.txt
2.到时间后查看
[root@server_1 ~]# cat /tmp/date.txt
Sun May 26 21:03:01 CST 2019
示例2,每天8点21分定时重启
1.编辑
[root@server_1 ~]# crontab -l
08 21 * * * /sbin/reboot
2.到时间后自动重启
[root@server_1 ~]# Connection to 192.168.19.101 closed by remote host.
Connection to 192.168.19.101 closed.
示例三,每隔1分钟发送消息hello
1.编辑
[root@server ~]# crontab -l
*/1 * * * * wall hello
2.测试
[root@server ~]#
Broadcast message from root@server (Sun Nov 24 16:24:01 2019):
hello
示例四,每天16:40定时执行脚本1.sh
1.编辑脚本
[root@server ~]# vim 1.sh
#!/bin/bash
wall "hello"
2.编辑计划
[root@server ~]# crontab -l
33 16 * * * /bin/bash /root/1.sh
3.测试
[root@server ~]#
Broadcast message from root@server (Sun Nov 24 16:36:01 2019):
hello