前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Linux入门】计划任务配置

【Linux入门】计划任务配置

原创
作者头像
参谋带个长
修改2023-12-09 18:46:24
3041
修改2023-12-09 18:46:24
举报

Linux计划任务分为两类:

1、单次按计划执行,然后终止(at)

2、例行按计划执行,每隔一定周期循环执行(crontab)

单次执行计划任务 at

at 命令的作用是在一个指定的时间执行1个指定任务,只执行1次,且需开启 atd 进程。

代码语言:shell
复制
# 启动 atd 服务
systemctl start atd

命令格式:

代码语言:shell
复制
at [参数] 时间格式

# 参数
-m:当指定的任务完成后,将给用户发送邮件,即便没有输出信息
-v:显示任务计划执行的时间
-c:列出任务的实际命令内容

# 时间格式
# 在今天的HH:MM时执行,若时间已过则明天执行
HH:MM

# 在某年某月某日某时某分执行
HH:MM YYYY-MM-DD

# 在某个时间点再加多少时间后执行
HH:MM + number [minutes][hours][days][weeks]

命令示例:

代码语言:shell
复制
# 当前时间再加2分钟后执行
at now + 2 minutes

# 可能返回以下内容
warning: commands will be executed using /bin/sh
at Thu Dec  7 18:15:00 2023

# 在 at> 后输入要执行的内容
at> echo hello>/home/1.txt

# 可以输入多条要执行的内容
at> echo hello>/home/2.txt

# 按 ctrl+d 结束输入,会自动产生代码<EOT>
at> <EOT>

也可以指定时间执行

代码语言:shell
复制
# 指定日期时间执行
at 18:31 2023-12-07

# 指定时间执行,若时间已过则明天执行
at 18:32

创建完成后通过以下命令进行查询、删除、查看内容等操作

代码语言:shell
复制
# 查询目前系统中所有的 at 计划
atq

# 可能返回如下内容,其中数字9就是at计划的编号
9	Thu Dec  7 18:27:00 2023 a root

# 查看计划的内容
at -c 9

# 删除任务
atrm 9

循环执行计划任务 crontab

循环执行计划任务是由 cron(crond)这个系统服务来控制的,该服务默认启动,用户控制计划任务的命令是 crontab

crontab -e 是针对用户来设计的,如要设计系统的计划任务,则需编辑 /etc/crontab cron 服务最低检测限制是【分钟】

命令格式:

代码语言:shell
复制
crontab 选项

# 选项
-e:编辑该用户的计划任务设置
-l:列出该用户的计划任务设置
-r:删除该用户的计划任务设置

编辑 crontab

代码语言:shell
复制
# 编辑计划任务
crontab -e

# 输入【时间格式】及【要执行的命令】
时间格式    要执行的命令

# 以上内容可以输入多条,全部编辑完成后保存退出

crontab 写法说明

代码语言:shell
复制
# 时间顺序:分 时 日 月 周
minute   hour   day   month   week   command    

# minute: 表示分钟,可以是从0到59之间的任何整数
# hour:表示小时,可以是从0到23之间的任何整数
# day:表示日期,可以是从1到31之间的任何整数
# month:表示月份,可以是从1到12之间的任何整数
# week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日
# command:要执行的命令,可以是系统命令,也可以是脚本文件(必须为绝对路径)

在以上各个字段中,还可以使用以下特殊字符:

星号(*):代表所有可能的值,在满足其它字段的制约条件后执行
逗号(,):逗号隔开的值指定列表范围,例如“1,2,5,7,8,9”
中杠(-):整数之间的中杠表示整数范围,例如“2-6”表示“2,3,4,5,6”
正斜线(/):正斜线指定时间的间隔频率,可以和星号一起使用,例如*/10,如用在minute表示每10分钟执行1次

# 时间格式
*    *    *    *    *
-    -    -    -    -
|    |    |    |    |
|    |    |    |    +----- 星期中星期几 (0 - 6) (星期天 为0)
|    |    |    +---------- 月份 (1 - 12) 
|    |    +--------------- 一个月中的第几天 (1 - 31)
|    +-------------------- 小时 (0 - 23)
+------------------------- 分钟 (0 - 59)

crontab 写法示例:

代码语言:shell
复制
# 每分钟执行1次command
* * * * * command

# 每小时执行1次command
0 * * * * command

# 每天执行1次command
0 0 * * * command

# 每周执行1次command
0 0 * * 0 command

# 每月执行1次command
0 0 1 * * command

# 每月最后1天执行1次command
0 0 L * * command

# 每年1月1日执行1次command
0 0 1 1 * command

# 每2小时执行1次command
0 */2 * * * command

# 每天7:50执行1次command
50 7 * * * command

# 每月1号和15号执行1次command
0 0 1,15 * * command

# 每小时的第1分执行1次command
1 * * * * command

# 每小时的第3和第15分钟执行1次command
3,15 * * * * command

# 在上午8点到11点的第3和第15分钟执行1次command
3,15 8-11 * * * command

# 每隔2天的上午8点到11点的第3和第15分钟执行1次command
3,15 8-11 */2 * * command

# 每月1、10、22日的4 : 45执行1次command
45 4 1,10,22 * * command

# 每周六、周日的1:10执行1次command
10 1 * * 6,0 command

# 每天18 : 00至23 : 00之间每隔30分钟执行1次command
0,30 18-23 * * * command

当程序指定的时间执行后,系统会发一封邮件给当前的用户,显示该程序执行的内容,若不希望收到这样的邮件,在每行后空格之后加上 > /dev/null 2>&1 即可,如:

代码语言:shell
复制
1 * * * * command > /dev/null 2>&1 

crontab 命令的其它示例

代码语言:shell
复制
# 列出该用户的计划任务设置
crontab -r

# 删除该用户的计划任务设置
crontab -l

我正在参与2023腾讯技术创作特训营第四期有奖征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 单次执行计划任务 at
  • 循环执行计划任务 crontab
    • 编辑 crontab
      • crontab 写法说明
        • crontab 写法示例:
          • crontab 命令的其它示例
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档