HCRM博客

使用CentOS at命令在指定时间执行一次性任务教程

CentOS at 命令详解

Centos操作系统中,at命令是一个强大的工具,用于在指定的时间安排一次性任务,与周期性任务调度工具cron不同,at只执行一次任务,而不是定期执行,本文将详细介绍at命令的基本用法、常见选项和一些高级用法,并通过具体示例帮助读者快速上手。

使用CentOS at命令在指定时间执行一次性任务教程-图1
(图片来源网络,侵权删除)

基本语法及用法

1. 基本语法

  • at [参数] [时间]

2. 安排一次性任务

使用at命令安排一个在未来某个时间执行的任务:

  • at TIME

要在今天下午4点执行/bin/ls命令:

  • at 16:00

输入命令后,at会进入交互模式,在交互模式中输入要执行的命令,最后按Ctrl+D结束输入。

3. 查看待执行任务

使用CentOS at命令在指定时间执行一次性任务教程-图2
(图片来源网络,侵权删除)

使用atq命令可以查看当前用户的待执行任务:

  • atq

输出示例:

  • 8 20231026 16:00 a root
  • 7 20231026 17:00 a root

4. 删除待执行任务

使用atrm命令可以删除指定的待执行任务:

  • atrm JOB_ID

删除工作号为7的任务:

  • atrm 7

指定时间格式

1. HH:MM

使用CentOS at命令在指定时间执行一次性任务教程-图3
(图片来源网络,侵权删除)

指定具体的小时和分钟。

  • at 04:00

如果该时刻已超过,则任务将在第二天的这个时间执行。

2. HH:MM YYYYMMDD

规定在某年某月的某一天的特殊时刻进行该项任务。

  • at 04:00 20240701

3. HH:MM[am|pm] [Month] [Date]

采用12小时计时制,并加上AM或PM说明是上午还是下午。

  • at 04pm March 17

4. HH:MM[am|pm] + number [minutes|hours|days|weeks]

规定在某个时间点再加多少时间后才进行该项任务。

  • at now + 5 minutes
  • at 04pm + 3 days

5. today(或tomorrow(明天)

直接使用today或tomorrow来指定完成命令的时间。

  • at tomorrow

常见选项及参数

m:当指定的任务被完成之后,将给用户发送邮件,即使没有标准输出。

Iatq的别名。

datrm的别名。

v:显示任务将被执行的时间。

c:打印任务的内容到标准输出。

V:显示版本信息。

q:后面加<列队>,使用指定的列队。

f:后面加<文件>,从指定文件读入任务而不是从标准输入读入。

t:后面<时间参数>,以时间参数的形式提交要运行的任务。

限制用户的使用权限

为了系统安全,可以通过控制文件限制用户对at命令的使用:

1、/etc/at.allow:写在这个文件中的使用者才能使用at

2、/etc/at.deny:若写在这个文件中的使用者则不能使用at

3、如果两个文件都不存在,那么只有root可以使用at命令。

4、在一般的distributions中,由于假设系统上的所有用户都是可信任的,因此系统通常会保留一个空的/etc/at.deny文件,意思是允许所有人使用at命令。

5、如果不希望有某些使用者使用at,将那个使用者的帐号写入/etc/at.deny即可!一个帐号写一行。

注意事项

1、如果at的指令输出的路径有误,则会把结果以邮件的形式发送给用户。

2、当一个任务创建了会被分配到一个任务号,而且会在/var/spool/at里面排队,不建议使用vi编辑器去修改,容易出错。

实例操作指南

1. 三天后的下午5点执行 /bin/ls

  • at 5pm + 3 days
  • at> /bin/ls
  • at> <EOT>
  • job 7 at 20231029 17:00

2. 明天17点钟,输出时间到指定文件内

  • at 17:20 tomorrow
  • at> date > /root/doiido.log
  • at> <EOT>
  • job 8 at 20231027 17:20

3. 计划任务设定后,在没有执行之前用atq命令查看系统没有执行工作任务

  • atq
  • 8 20231027 17:20 a root
  • 7 20231029 17:00 a root

4. 删除已经设置的任务

  • atrm 7

5. 显示已经设置的任务内容

  • at c 8
  • #!/bin/sh
  • atrun uid=0 gid=0
  • mail root 0
  • echo "hello"
  • date > doiido.log

扩展指令batch

batchat命令的特殊版本,在执行的任务会占用大量资源的时候用,只在CPU需求低于80%的时候使用:

  • batch
  • at> echo "hi" > /dev/tty2

batch创建的任务也是通过atq查看,通过atrm删除。

FAQs问答环节

Q1:at命令如何安装?

A1: 在某些CentOS版本中,可能需要手动安装at服务,可以使用以下命令进行安装:

  • yum y install at

启动并设置开机自启:

  • ps ef | grep atd # 查看是否开启atd进程
  • /etc/init.d/atd start # 开启atd服务
  • chkconfig level 2345 atd on # 设置atd开机启动

Q2: 如何查看所有用户的at任务?

A2: 使用超级用户权限执行以下命令:

  • sudo atq

或者查看特定用户的任务:

  • sudo atq user_name

Q3: 如何确保任务执行结果通知用户?

A3: 使用m选项,当任务完成后,系统会发送邮件给指定用户:

  • at m now + 1 minute echo "Task completed"

本站部分图片及内容来源网络,版权归原作者所有,转载目的为传递知识,不代表本站立场。若侵权或违规联系Email:zjx77377423@163.com 核实后第一时间删除。 转载请注明出处:https://blog.huochengrm.cn/pc/8528.html

分享:
扫描分享到社交APP
上一篇
下一篇