乐趣区

关于java:Linux-at命令详解

大家好,我是良许。

生存中,咱们有太多场景须要应用到闹钟,比方早上 7 点起床,下午 4 点散会,早晨 8 点购物,等等。

在 Linux 零碎里,咱们同样也有相似的需要。比方咱们想在凌晨 1 点将文件上传服务器,或者在早晨 10 点确认零碎状态,等等。

但咱们不可能始终守在电脑前,毕竟咱们也须要上班 / 睡觉,还要陪女朋友(new 一个也行)。而且即便在下班期间,如果到点了还须要人工操作,未免效率太低了。

at 命令就是为这个需要而诞生的。应用 at 命令,你能够在特定工夫主动实现你所设定的工作,也能够实现自动化,十分方便快捷!

装置 at 命令

一般来讲,大部分 Linux 发行版都曾经装置了 at 命令,不确定的话能够应用 at -V 命令查看,如果有版本返回,阐明就能够失常应用 at 命令。

$ at -V
at version 3.1.13

你可能还须要启动 at 守护过程,称为 atd。在大多数 Linux 零碎上,你能够应用 systemctl 命令启用 atd 服务并将它们设置为从当初开始主动启动:

$ sudo systemctl enable --now atd

at 命令根本用法

  • 语法
at [选项] [日期工夫]
  • 选项
-f:指定蕴含具体指令的工作文件
-q:指定新工作的队列名称
-l:显示待执行工作的列表
-d:删除指定的待执行工作
-m:工作执行实现后向用户发送 E-mail
  • 参数
日期工夫:指定工作执行的日期工夫

应用 at 命令交互性安顿工作

想想看,咱们平时是怎么应用闹钟这个工具的?首先咱们点击闹钟软件上的加号,而后再设定工夫,再在备注里输出闹钟的目标。

应用 at 命令交互性安顿工作也是一样的情理。首先你输出 at 命令,而后再跟上具体的工夫。

回车之后就进入到交互性界面,你再具体输出要做的事件(命令),最初以 <EOT> 完结输出,工作就设置好了。

例如,你想在早上 11:20 的时候,在 at-test.txt 文档里写入 hello world 这句话,能够这样交互性输出:

$ at 11:20 AM
warning: commands will be executed using /bin/sh
at> echo "hello world" > ~/at-test.txt
at> <EOT>
job 3 at Mon Jul 26 11:20:00 2021

如上所示,at 命令应用直观和天然的工夫格局。你不须要晓得 24 小时制或将工夫转换为 UTC 格局。通常,能够间接应用咱们生存中罕用的单词它就能了解,例如 noon1:30 PM13:37 等。

在 11:20 过后,你能够应用 cat 命令检查一下 at-test.txt 文件是否有内容写入:

$ cat ~/at-test.txt
hello world

应用 at 命令安顿工作

如果你不想应用交互的形式来给 at 命令安顿工作,能够应用管道将 echoprintf 的值传递给 at 命令。

比方,我想从当初开始一分钟后向 at-test.txt 文件写入 hello again 语句:

$ echo "echo'hello again'>> ~/at-test.txt" | at now +1 minute

一分钟后,验证新命令是否已执行:

$ cat ~/at-test.txt
hello world
hello again

工夫表达式

后面提到过,at 命令应用的是咱们日常生活中所应用的工夫格局,十分不便:

  • YYMMDDhhmm[.ss]
    (缩写年、月、日、小时、分钟[秒])
  • CCYYMMDDhhmm[.ss]
    (残缺年、月、日、小时、分钟和[秒])
  • now
  • midnight
  • noon
  • teatime`(下午 4 点)
  • AM
  • PM

工夫和日期能够是相对的,也能够增加一个加号 (+ ) 使它们绝对于 当初。在指定绝对工夫时,上面这些日常生活中所应用的词汇都能够应用:

  • minutes
  • hours
  • days
  • weeks
  • months
  • years

上面是一些 at 命令无效表达式的示例:

$ echo "rsync -av /home/tux me@myserver:/home/tux/" | at 3:30 AM tomorrow
$ echo "/opt/batch.sh ~/Pictures" | at 3:30 AM 08/01/2022
$ echo "echo hello" | at now + 3 days

查看 at 工作队列

随时工夫的推移,咱们能够遗记在 at 命令队列时设置了多少个工作,如果你想进行查看,能够应用 atq 命令:

$ atq
10 Thu Jul 29 12:19:00 2021 a tux
9  Tue Jul 27 03:30:00 2021 a tux
7  Tue Jul 27 00:00:00 2021 a tux

要从队列中删除工作,请应用 atrm 命令和工作编号。例如要删除工作 7:

$ atrm 7
$ atq
10 Thu Jul 29 12:19:00 2021 a tux
9  Tue Jul 27 03:30:00 2021 a tux

如果想要查看打算工作中的具体内容,就必须查看 at spool。只有 root 用户能力查看at spool,因而你必须应用 sudo 来查看 spoolcat 工作的内容。

小结

at 命令是防止遗记在未来特定工夫的工作或在你来到时让计算机为你运行工作的十分好的形式。与 cron 命令不一样的是,它不须要使工作从当初始终循环运行,因而它的语法比 cron 简略得多。

下次你想在上班后让零碎为你做个工作,能够试试 at 命令。


最初,最近很多小伙伴找我要Linux 学习路线图,于是我依据本人的教训,利用业余时间熬夜肝了一个月,整顿了一份电子书。无论你是面试还是自我晋升,置信都会对你有帮忙!

收费送给大家,只求大家金指给我点个赞!

电子书 | Linux 开发学习路线图

也心愿有小伙伴能退出我,把这份电子书做得更完满!

有播种?心愿老铁们来个三连击,给更多的人看到这篇文章

举荐浏览:

  • 干货 | 程序员进阶架构师必备资源免费送
  • 书单 | 程序员必读经典书单(高清 PDF 版)
退出移动版