at:定时任务,仅执行一次
侧边栏壁纸
  • 累计撰写 64 篇文章
  • 累计收到 1 条评论

at:定时任务,仅执行一次

soulio
2024-09-11 / 0 评论 / 4 阅读 / 正在检测是否收录...

at​ 命令用于在指定时间执行一次性任务。这个命令也是需要独立安装的:apt install at

它的兄弟crontab​用于执行周期性任务。

一、创建任务

这个命令是比较灵活的:

  • 第一行写时间,第二行写任务,第三行按下Ctrl+D​结束输入

    at 10:30 PM
    at> echo "Hello, world!" > output.txt
    at> Ctrl+D
    
  • 你也可以在一行中完成

    $ echo "ls -l" > output.txt | at now + 1 hour
    warning: commands will be executed using /bin/sh
    job 1 at Wed Sep 11 17:05:00 2024
    

  • 任务还可以是脚本

    at 3pm tomorrow < script.sh
    
  • 最准确是是指定一个绝对时间

    at 10:00 2024-04-07 < script.sh
    

二、查看任务

使用atq​或at -l​查看当前计划任务列表

$ at -l
1       Wed Sep 11 17:05:00 2024 a root
2       Wed Sep 11 17:10:00 2024 a root

查看任务内容:使用at -c 任务序号​命令,输出的最底部就是任务的内容。输出不太友好。

三、取消任务

先查看任务列表,再使用atrm​或者at -r​命令可以取消一个计划任务。例如,要取消任务编号为1的任务:

atrm 1

四、守护进程

atd

● atd.service - Deferred execution scheduler
     Loaded: loaded (/lib/systemd/system/atd.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2024-07-31 09:05:04 CST; 1 month 11 days ago
       Docs: man:atd(8)
   Main PID: 1072 (atd)
      Tasks: 1 (limit: 9283)
     Memory: 284.0K
        CPU: 169ms
     CGroup: /system.slice/atd.service
             └─1072 /usr/sbin/atd -f

五、配置文件

默认:所有用户都可以使用at命令

/etc/at.allow​ 明确指出可以使用at命令的用户:

zhangsan
lisi
wangwu

/etc/at.deny​明确指出不可以使用at命令的用户:

zhaoliu

六、详细选项

at 选项 时间
  • -m​: 当任务完成时,发送邮件给用户。如果不想发送邮件,可以在命令后面加上>/dev/null 2>&1​,将输出重定向到/dev/null​。
  • -f <file>​: 指定一个包含要执行命令的文件。
  • -l​: 列出当前用户的所有at​任务。
  • -d <job>​: 删除指定的at​任务。
  • -r <job>​: 删除指定的at​任务,与-d​参数相同。
  • -q <queue>​: 指定任务的优先级队列。数字越小,优先级越高。
  • -v <job>​: 显示指定at​任务的详细信息。
  • -c <job>​: 显示指定at​任务的命令。
  • -t <time>​: 指定任务的执行时间,格式为HH:MM​。
  • -d​: 删除所有当前用户的at​任务。

短命令

  1. atq: 等效at -q​命令。
  2. atrm: 等效at -r​命令。
  3. batch: 在系统资源较为空闲时执行一组任务。

本文共 431 个字数,平均阅读时长 ≈ 2分钟
0

海报

正在生成.....

评论 (0)

取消