以下是 atq 、cron 、batch 和 at 命令的功能解析:
1. atq(查看一次性计划任务队列)
-
功能 :
显示当前用户定义的所有 一次性计划任务 ,这些任务通常由
at命令创建。 -
语法:
atq -
输出内容:
- 显示任务的队列编号、执行时间和任务的所有者。
-
示例:
$ atq 3 Thu Dec 21 12:00:00 2024 a user 5 Thu Dec 21 18:00:00 2024 a user此输出表示当前用户有两个任务,分别在 12:00 和 18:00 执行。
2. cron(周期性任务调度)
-
功能 :
管理 周期性计划任务 ,支持在指定时间 反复执行。
-
配置文件:
- 系统级任务:
/etc/crontab - 用户任务:
~/.crontab
- 系统级任务:
-
常用命令:
-
列出当前用户的任务 :
crontab -l -
编辑当前用户的任务 :
crontab -e
-
-
示例 :
在
crontab中添加任务,每天 2:30 运行脚本/path/to/script.sh:30 2 * * * /path/to/script.sh
3. batch(低负载时运行任务)
-
功能 :
定义在 系统负载较低 时运行的任务。
系统会根据当前负载平均值(由
/proc/loadavg获取)决定是否执行任务。 -
语法:
batch输入命令后进入交互模式,可输入需要执行的任务命令。
-
示例:
$ batch at> echo "Task is running under low system load" > /tmp/batch_task.log at> <Ctrl+D>此任务会在系统负载低时执行,并将输出写入
/tmp/batch_task.log。
4. at(定义一次性计划任务)
常见问题
注意事项
总结
at 是一个强大而简洁的工具,适用于单次定时任务。它与 cron 互为补充,在需要调度简单任务时非常便利。
-
功能 :
定义在 特定时间 执行一次的任务。
-
语法:
at [选项] 时间 常见选项-f <文件>:从指定的文件中读取命令并调度执行。-l或atq:列出当前用户的任务队列。-d或atrm:删除任务。-m:任务完成后发送邮件给用户,即使任务没有输出。-c <任务号>:查看指定任务的内容。
时间格式
HH:MM:24小时制的时间。noon:中午12点。midnight:午夜12点。now + n minutes/hours/days/weeks:当前时间后n分钟/小时/天/周。MMDDYY或MM/DD/YY:指定日期和时间。tomorrow:明天的同一时间。
-
示例 1:指定时间运行任务:
$ at 14:00 at> echo "Task runs at 14:00" > /tmp/at_task.log at> <Ctrl+D>在当天 14:00 执行任务。
-
示例 2:延迟运行任务:
$ at now + 2 hours at> echo "Task runs after 2 hours" > /tmp/delayed_task.log at> <Ctrl+D>两小时后执行任务。
-
示例3:通过文件调度任务
at -f my_script.sh now + 1 hour- 调度任务为执行文件
my_script.sh,时间是 1 小时后。
- 调度任务为执行文件
-
查看任务 : 用
atq或at -l 命令查看当前定义的任务。 -
删除任务 : 用
atrm删除特定任务:atrm [任务编号] -
at命令权限/etc/at.allow和/etc/at.deny文件用于控制哪些用户可以使用at。- 如果存在
/etc/at.allow文件,只有列出的用户可以使用at。 - 如果不存在
/etc/at.allow,但存在/etc/at.deny,所有不在/etc/at.deny中的用户都可以使用at。 - 如果两个文件都不存在,则只有超级用户可以使用
at。
-
时间设置问题
- 如果指定时间已过,任务会在次日同一时间执行。
-
输出存储
- 任务的输出(如果有)会发送到用户的邮箱,前提是系统已配置邮件服务。
-
确保
atd服务正在运行,否则at任务无法执行:systemctl status atd -
使用
at的任务不支持复杂的循环逻辑,如每隔几小时执行一次,这种情况应使用cron。
对比总结
| 命令 | 功能 | 是否周期性 | 是否查看/管理任务 |
|---|---|---|---|
atq |
查看一次性任务队列 | 否 | 是 |
cron |
周期性运行任务 | 是 | 是 |
batch |
在系统负载低时运行任务 | 否 | 否(仅定义任务) |
at |
定义在特定时间执行一次的任务 | 否 | 否(仅定义任务) |