任务调度
任务调度
Cron任务调度
-
cron是 Linux 中最常用的任务调度工具,允许用户按固定的时间间隔(如每分钟、每小时、每天等)执行任务。 -
cron的工作原理cron是一个守护进程(crond),在后台运行并检查是否有需要执行的任务。- 用户通过编辑
crontab文件来定义任务。 cron根据crontab文件中的时间规则执行任务。
-
crontab文件格式-
crontab文件的每一行代表一个任务,格式如下: -
* * * * * command-to-be-executed -
五个
*分别表示:- 分钟(0-59)
- 小时(0-23)
- 日期(1-31)
- 月份(1-12)
- 星期(0-7,0 和 7 都表示星期日)
-
command-to-be-executed:要执行的命令或脚本。 -
注意执行的命令或者脚本要有权限执行
-
-
时间和字段的取值
-
字段 取值范围 特殊字符说明 分钟 0-59 *(每),,(列表),-(范围),/(间隔)小时 0-23 同上 日期 1-31 同上 月份 1-12 同上 星期 0-7(0 和 7 都是星期日) 同上 -
特殊字符
*:匹配所有值。- 示例:
* * * * *表示每分钟执行一次。
- 示例:
,:指定多个值。- 示例:
0,15,30,45 * * * *表示每小时的 0、15、30、45 分钟执行。
- 示例:
-:指定范围。- 示例:
0 9-17 * * *表示每天 9 点到 17 点每小时执行一次。
- 示例:
/:指定间隔。- 示例:
*/5 * * * *表示每 5 分钟执行一次。
- 示例:
-
-
管理crontab 文件
-
查看当前用户的
crontab文件-
crontab -l
-
-
编辑当前用户的
crontab文件-
crontab -e- 这会打开默认的文本编辑器(如
vi或nano),允许用户编辑任务。
- 这会打开默认的文本编辑器(如
-
-
删除当前用户的
crontab文件-
crontab -r- 这会删除当前用户的所有
cron任务。
- 这会删除当前用户的所有
-
-
指定用户管理
crontab文件-
管理员可以使用
-u选项管理其他用户的crontab文件。 -
crontab -u username -e # 编辑指定用户的 crontab 文件 crontab -u username -l # 查看指定用户的 crontab 文件 crontab -u username -r # 删除指定用户的 crontab 文件
-
-
at任务调度
-
at是 Linux 中用于调度一次性任务的命令。与cron不同,at用于在指定时间执行一次任务,而不是周期性任务。 -
首先确保
atd服务已启动(at任务依赖此服务)-
systemctl status atd -
at [选项] 时间 at 14:30 -
输入命令后,按
Ctrl+D结束输入
-
-
指定时间的方式
at支持多种时间格式:- 具体时间:
at 14:30:在今天的 14:30 执行。at 2:30 PM:同上,使用 12 小时制。
- 相对时间:
at now + 10 minutes:10 分钟后执行。at now + 2 hours:2 小时后执行。at now + 3 days:3 天后执行。
- 日期和时间:
at 14:30 tomorrow:明天 14:30 执行。at 14:30 2023-12-25:在 2023 年 12 月 25 日 14:30 执行。
- 在
at命令后,会进入交互式输入模式,可以输入要执行的命令。输入完成后,按Ctrl+D保存并退出。
-
查看 at 任务
-
atq 1 Mon Oct 30 14:30:00 2023 a username -
第一列是任务 ID。
-
第二列是任务的执行时间。
-
最后一列是任务所属用户。
-
-
删除 at 任务
-
atrm 任务ID atrm 1
-
-
at 任务的工作目录
-
at任务默认在用户的主目录下执行。如果需要指定工作目录,可以在任务中显式切换目录: -
at now + 1 hour at> cd /path/to/directory at> ./script.sh at> <EOT>
-

浙公网安备 33010602011771号