Linux计划任务配置,crontab或at两种方式

Linux计划任务分为两类:

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

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

单次执行计划任务 at

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

# 启动 atd 服务
systemctl start atd

命令格式:

at [参数] 时间格式

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

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

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

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

命令示例:

# 当前时间再加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>

也可以指定时间执行

# 指定日期时间执行
at 18:31 2023-12-07

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

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

# 查询目前系统中所有的 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 服务最低检测限制是【分钟】

命令格式:

crontab 选项

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

编辑 crontab

# 编辑计划任务
crontab -e

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

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

crontab 写法说明

# 时间顺序:分 时 日 月 周
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 写法示例:

# 每分钟执行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 即可,如:

1 * * * * command > /dev/null 2>&1 

crontab 命令的其它示例

# 列出该用户的计划任务设置
crontab -r

# 删除该用户的计划任务设置
crontab -l
  • 22
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值