Linux中的定时自动执行功能(at,crontab)
概念
在Linux系统中,提供了两种提前对工作进行安排的方式
at 只执行一次
crontab 周期性重复执行
通过对这两个工具的应用可以让我们在操作系统层面实现定时自动运行功能
实验环境
操作系统:CentOS Linux release 7.3.1611 (Core)
IP: 192.168.230.134
at介绍
at命令会,并且会执行一次
此功能会使用到atd工具,需要保证其为启动状态
[root@localhost ~]# systemctl status atd
● atd.service - Job spooling tools
Loaded: loaded (/usr/lib/systemd/system/atd.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2017-09-07 18:18:18 CST; 4h 2min ago
Main PID: 921 (atd)
CGroup: /system.slice/atd.service
└─921 /usr/sbin/atd -f
Sep 07 18:18:18 localhost.localdomain systemd[1]: Started Job spooling tools.
Sep 07 18:18:18 localhost.localdomain systemd[1]: Starting Job spooling tools...
at使用
常用命令如下
[root@localhost ~]# at -help
Usage: at [-V] [-q x] [-f file] [-mMlbv] timespec ...
at [-V] [-q x] [-f file] [-mMlbv] -t time
at -c job ...
atq [-V] [-q x]
at [ -rd ] job ...
atrm [-V] job ...
batch
时间格式:
格式 | 示例 | 意义 |
---|---|---|
HH:MM | 01:01 | 下一次1点1分执行 |
HH:MM YYYY-MM-DD | 01:00 2017-09-08 | 指定具体年月时间执行 |
HH:MM[am/pm]+number[minutes/hours/days/weeks] | now+3 days | 某时间点再加些时间后 |
at实例
创建测试用sh,并修改权限
[root@localhost ~]# vim test.sh
echo '豆姐威武'
[root@localhost ~]# chmod 755 test.sh
[root@localhost ~]# ./test.sh
豆姐威武
查看当前时间
[root@localhost ~]# date
Thu Sep 7 23:19:51 CST 2017
使用at命令,设定23:21执行test.sh命令,注意以Ctrl+d结束
[root@localhost ~]# at 23:21
at> /root/test.sh
at> <EOT>
job 5 at Thu Sep 7 23:21:00 2017
坐等一分钟后,收到系统给的信息,查看时间以及到了设定时间
You have new mail in /var/spool/mail/root
[root@localhost ~]# date
Thu Sep 7 23:21:04 CST 2017
查看系统收到的信息
[root@