at命令是Linux系统中用于定时执行任务的工具,以下是其核心使用方法及注意事项:
一、基础语法与功能
基本格式 ```
at [选项] [时间] 命令
```
- 时间参数:
支持绝对时间(如 `11:20 AM`)和相对时间(如 `next Monday`)。
- 命令参数:可执行系统命令或脚本,支持交互式输入。
常用选项 - `-f file`:指定包含命令的任务文件。
- `-q queue`:指定任务队列名称(默认为 `default`)。
- `-l`:列出待执行任务。
- `-d`:删除指定任务。
- `-m`:任务完成后发送邮件通知。
- `-r`:指定远程计算机执行任务。
二、交互式任务安排
直接输入命令
在终端输入 `at 11:20 AM` 后,会进入交互模式,可输入完整命令(如 `echo Hello World > at-test.txt`)。
示例
安排每天凌晨2点备份文件:
```
at 2:00 AM /path/to/backup.sh
```
三、计划任务调度
固定时间执行
使用 `at` 命令后跟日期时间参数,例如:
```
at 4:30 PM on Mondays
```
系统会自动计算下周一的4:30执行任务。
周期性任务
可设置每周或每月重复执行,例如:
```
at 8:00 AM every Monday
```
或每月15号执行:
```
at 10:00 AM on the 15th of every month
```
四、任务管理
查看任务列表
输入 `atq` 可查看当前待执行任务。
删除任务
通过任务ID或直接删除所有任务:
```
at 5 /delete
```
或
```
atq -d
```
五、注意事项
服务依赖:
需确保 `atd` 服务已启动(如 `systemctl enable atd`)。
权限管理:
默认只有超级用户可调度任务,可通过配置文件调整权限。
时间解析:
支持12/24小时制、模糊时间(如 `noon`)及日期组合(如 `2025-04-20`)。
六、示例综合应用
远程执行命令:
在远程主机执行 `ls -l /var/log`:
```
at 10:00 AM user@remotehost
```
失败重试机制:
结合 `cron` 的 `retry` 功能,实现任务失败后自动重试。
通过以上方法,可灵活实现定时任务管理,满足系统维护、自动化脚本执行等需求。