linux定时计划任务at主要用于一次性调度任务,而非周期性任务。它适合那些需要在未来某个时间点执行,但不需要重复的任务,执行完毕后任务会从队列中删除。
1.at安装
命令:
yum install -y at
[root@patrolagent ~]# yum install -y at
Loaded plugins: product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
rhel7 | 4.1 kB 00:00:00
Package at-3.1.13-22.el7.x86_64 already installed and latest version
Nothing to do
[root@patrolagent ~]#
定时计划任务at依赖atd守护进程运行,检查确保at服务已启动。
命令:
systemctl enable atd
systemctl start atd
systemctl status atd
[root@patrolagent ~]# systemctl enable atd
[root@patrolagent ~]# systemctl start atd
[root@patrolagent ~]# 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 2024-11-21 08:03:56 CST; 31min ago
Main PID: 791 (atd)
CGroup: /system.slice/atd.service
└─791 /usr/sbin/atd -f
Nov 21 08:03:56 patrolagent systemd[1]: Started Job spooling tools.
Nov 21 08:03:56 patrolagent systemd[1]: Starting Job spooling tools...
[root@patrolagent ~]#
at依赖系统运行桩体,如果系统在指定时间未运行(如关机或休眠),定时任务会被跳过,不会补偿。
2.at时间表达
at支持多种时间格式,这些格式可以表达您希望任务执行的确切时间:
hh:指定时和分(E.g:14:00)。
midnight:午夜(00:00)。
noon:中午(12:00)。
teatime:下午(16:00)。
tomorrow:明天的同一时间。
now +[time]:从当前时间开始便宜(E.g:now +2 hours OR now +1 day)。
指定具体时间:
at 14:00
指定相对时间:
at now +1 hour
at now +2 hours
at now +3 days
指定具体日期:
at 8:00 AM tomorrow
at 10:00 AM 12/22/2024 #month/day/year
3.at用法
用法:
at [time] [options]