网站Logo 苏叶的belog

定时任务调度

wdadwa
1
2026-03-13

一,crond 任务调度

1.1 概述

指定系统在某个时间执行特点的命令或程序。

1.2 任务调度分类

  1. 系统工作:有些重要的工作需要周而复始的重复执行,如病毒扫描等。
  2. 用户工作:个别用户可能希望执行某些程序,如mysql数据库的备份。

1.3 语法

crontab 选项

常用选项

选项说明
-e编辑crontab定时任务
-l查询crontab任务
-r删除当前用户的所有crontab任务

用法举例:将其写入到 crond 任务调度中,每一分钟执行一次

*/1**** ls -l /etc/ > tmp/to.txt  		#将etc目录的列表信息传入to.txt中

5 个占位符号的说明分--时--天--月--周

用法举例

项目含义范围
第一个*一小时中第几分钟0-59
第二个*一天中第几小时0-23
第三个*一月中第天1-31
第四个*一年中第几个月1-12
第五个*一周中的星期几0-7(0和7都代表星期天)

特殊符号的说明

特殊符号含义
*代表任何时间,比如第一个*就代表一小时中每分钟都执行依次的意思
,代表不连续的时间,比如"0 8,12,16 * * *",就代表在每天的8点0分,12点0分,16点0分都执行依次
-代表连续的时间范围,比如"0 5 * * 1-6"就代表周一到周六的5点执行
*/n代表每个多久执行依次,比如"*/10 * * * *"代表每隔10分钟执行

特殊时间执行任务案例

时间含义
45 22 * * *每天的22点45分执行命令
0 17 * * 1每周一17点0分执行命令
0 5 1,15 * *每月1到15号的5点0分执行命令
40 4 * * 1-5每周1到中午的4点40分执行命令
*/10 4 * * *每天4点每隔10分钟执行一次命令
0 0 1,15 * 1每个月的1号到15号,每周1的0点0分执行命令

星期几和几号最好不要同时出现!容易混乱。

一般的我们把要执行的指令写到 xxx.sh 脚本文件中,在 crontab 中定时执行即可,注意记得给执行权限!

重启任务调度

service crond restart

二,at定时任务

2.1 基本介绍

  1. at命令是一次性定时计划任务,at的守护进程atd会以后台模式运行,检查作业队列来运行。
  2. 默认情况下,atd守护进程每60s检查作业队列,有作业时会检查作业运行时间,如果时间与当前时间匹配就运行。
  3. at命令是一次性定时计划任务,执行完一次任务后不再执行
  4. 在使用at命令的时候,务必保障atd进程的启动!

atd 会 60s 一次对一个任务队列进行检测,如果条件符合就出队执行,否则就检测下一个

检测当前运行的进程

ps -ef

检查 atd 进程是否启动

ps -ef | grep atd

2.2 at命令语法

at 选项 时间

ctrl + D 结束 at 命令的输入

常用选项

选项含义
-m当指定的任务被完成后,将给用户发送邮件,即使没有标准输出
-M不发送邮件
-Iatq的别名
-datrm的别名
-v显示任务将被执行的时间
-c打印任务的内容到标准输出
-V显示版本信息
-q<队列>使用指定队列
-f<文件>从指定文件读入任务而不是从标准输入中读入
-t<时间参数>以时间参数的形式提交要运行的任务

2.3 at时间定义

  1. 接受在当天的 hh:mm (小时: 分钟) 式的时间指定。假如改时间过去了就放到第二天执行。比如 04:00

  2. 使用 midnight (深夜),noon (中午),teatime (下午茶时间,一般为下午 4 点) 等比较模糊的词来指定时间

  3. 采用 12 小时计时制,即在时间后面加上am(上午), 或pm(下午),比如 12:pm

  4. 指定命令执行的具体时间,指定格式为 month day (月 日) 或者 mm/dd/yy(月 / 日 / 年) 或者dd.mm.yy(日. 月. 年)

    日期必须跟在时间后面,如 04:00 2021-03-1

  5. 使用相对计时法,指定格式为 now+count time-untis

    • now就是当前时间,time-untis是时间单位,这里可以为
    • minutes(分钟)
    • hours(小时)
    • days(天)
    • weeks(星期)
    • count(是时间数量)如几天,几小时等 如 now+ 5 minutes,五分钟后。
  6. 直接使用 today(今天),tomorrow(明天) 来指定完成命令时间。

查看系统中未执行的任务

atq

删除已经设置的任务

atrm 任务编号

对于 at -q 命令

-q 选项后面跟上队列名称将使用指定的队列执行 at 任务

at -q队列等级 时间
  • 队列名称只包含一个字母,有效的队列名称取值范围是:小写字母 a-z 或大写字母 A-Z

  • 在默认情况下 a 队列作为 at 命令的默认队列,b 队列作为 batch 命令的默认队列

  • 越大的字母在执行时拥有越高的优先级

  • 如果在创建 at 计划任务是使用大写字母指定任务的队列,该任务在执行的时候将被当做batch 计划任务处理

batch:在系统负荷允许的情况下执行 at 任务,换言之,就是在系统空闲的情况下才执行 at 任务


对于 at -f 命令

-f 选项后面加上文件路径即可

at -f文件路径 时间
动物装饰