19. Linux的at定时任务调度

19. Linux的at定时任务调度,第1张

与crond不同的是,at任务调度是一次性的,而crond是重复性的

1.1 at命令是一次性定时计划任务,at的守护进程atd会以后台模式运行,检查作业队列来运行

1.2 默认情况下,atd守护进程每60s检查作业队列,有作业时,会检查作业运行时间,如果时间与当前时间匹配,则运行此作业

1.3 at命令是一次性定时计划任务,执行完一个任务后就不再执行这个任务了

1.4 在使用at命令的时候,一定要保证atd进程的启动,可以使用相关指令查看

    ps -ef | grep atd 可以检查atd是否在运行

at [选项] [时间]

按两次 ctrl+d 结束at命令的输入

4.1 当天的hh:mm(小时:分钟),假如这个时间已经过去,那么就第二天的这个时间执行。例如04:00

4.2 模糊的词语,例如midnight、noon、teatime(下午茶时间,16:00左右)

4.3 采用12小时计时制,例如8am

4.4 指定执行命令的具体日期,格式为month dat(月 日)或者mm/dd/yy或者dd.mm.yy,指定的日期必须跟着写在在指定时间的后面,例如:04:00 2021-3-1就是2021年3月1日凌晨4点整执行

4.5 相对计时法,指定格式为now + count time-units,now就是当前时间,time-units是时间单位,可以是minutes、hours、days、weeks。count是时间的数量,例如:now + 5 minutes

4.6 直接用today、tomorrow来指定完成命令的时间

5.1 2天后的下午5点,执行/bin/ls /home指令

at 5pm + 2 days 按回车键

然后写下那个时刻要执行命令 /bin/ls /home

最后按两次ctrl+d退出at指令

5.2 atq指令可以直接执行,查看系统中待执行的工作任务

5.3 明天17:00输出时间到指定文件内 /root/date100.log

at 17:00 tomorrow 按回车键

date >/root/date100.log

按两次ctrl+d退出at指令的输入

5.4 2分钟后

at now + 2 minutes

5.5 删除已经设置的任务,atrm 编号

可以用atq列出待执行的任务,列出后第一列就是job编号

之前说了使用crontab实现定时执行任务,假如我们只是想要让特定任务运行一次,那么,这时候就要用到at监控程序了。

一、at服务

cron是一个linux下 的定时执行工具,可以在无需人工干预的情况下运行作业。

service atd start    //启动服务

service atd  stop     //关闭服务

service atd restart  //重启服务

service atd reload   //重新载入配置

service atd status   //查看服务状态 

二、at在配置文件:

at类似打印进程,会把任务放到/var/spool/at目录中,到指定时间运行它 。at命令相当于另一个shell,运行at time命令时,它发送一个个命令,可以输入任意命令或者程序。

三、参数详解

at [-V] [-q x] [-f file] [-mldbv] time

at -c job ...

atq [-V] [-q x]

atrm [-V] job ...

-V : 印出版本编号 

-q : 使用指定的伫列(Queue)来储存,at 的资料是存放在所谓的 queue 中,使用者可以同时使用多个 queue,而 queue 的编号为 a, b, c... z 以及 A, B, ... Z 共 52 个 

-m : 即使程序/指令执行完成后没有输出结果, 也要寄封信给使用者 

-f file : 读入预先写好的命令档。使用者不一定要使用交谈模式来输入,可以先将所有的指定先写入档案后再一次读入 网络应用

-l : 列出所有的指定 (使用者也可以直接使用 atq 而不用 at -l) 

-d : 删除指定 (使用者也可以直接使用 atrm 而不用 at -d) 

-v : 列出所有已经完成但尚未删除的指定 

   at命令执行流程

# at 2:05 tomorrow

at>/home/kyle/do_job

at>Ctrl+D

AT Time中的时间表示方法

-----------------------------------------------------------------------

时 间 例子 说明

-----------------------------------------------------------------------

Minute    at now + 5 minutes   任务在5分钟后运行

Hour      at now + 1 hour      任务在1小时后运行

Days      at now + 3 days      任务在3天后运行

Weeks     at now + 2 weeks     任务在两周后运行

Fixed     at midnight          任务在午夜运行

Fixed     at 10:30pm           任务在晚上10点30分

Fixed     at 23:59 12/31/2018 任务在2018年12月31号23点59分

由于at大多数 Linux 发行版都没有默认安装该工具,因此我们需要先添加它。以下是大多数较受欢迎的方法。

Ubuntu / Debian / Linux Mint

linuxmi@linuxmi /home/linuxmi/www.linuxmi.com sudo apt install at

Fedora / AlmaLinux / Rocky Linux

linuxmi@linuxmi /home/linuxmi/www.linuxmi.com sudo dnf install at

Arch Linux / Manjaro

linuxmi@linuxmi /home/linuxmi/www.linuxmi.com sudo pacman -S at

然后,请验证该atd服务是否已启用并正在运行,因为该at命令依赖于它。

linuxmi@linuxmi /home/linuxmi/www.linuxmi.com sudo systemctl status atd

检查 atd 服务是否正在运行。

如果不是,您可以通过运行如下所示的两个命令来激活并运行它。

sudo systemctl enable atd sudo systemctl start atd

OK。我们现在可以继续使用at命令设置警报。语法很简单。键入at,然后是您希望执行特定 *** 作的时间。这里有些例子:

安排作业在 10 分钟后执行:

at now +10 minutes

安排在特定时间执行的作业:

at 15:00 at 3:00 pm

安排作业在 1 月 19 日早上 8:30 执行。

at 8:30 January 19

安排明天下午 5:00 执行作业。

at 5:00 pm tomorrow

现在你应该明白了。使用“ HH:MM ”格式指定时间。在时间后使用“ am ”或“ pm ”表示 12 小时制时间格式。最重要的是,可以使用月份名称后跟日期来指定日期。此外,at接受“ now+ interval ”增量,其中 interval 是一个数字,后面可以跟以下字符串之一:“ minutes ”、“ hours ”、“ days ”或“ weeks ”。

现在让我们继续在 Linux 上设置闹钟。为此,我们将在无界面模式(无 GUI)下使用 VLC 媒体播放器,并指示它在特定时间播放给定的媒体文件。因此,如果您的 Linux 系统上没有 VLC,请安装它。

我们将闹钟定在早上 7:30。然后,当您输入所需的命令时at 7:30,您将被带到at命令行界面,您可以在其中输入要在指定时间运行的命令。在这种情况下,那将是:

vlc --intf dummy alarm.mp3

当然,如果媒体文件位于主目录之外的其他位置,请指定完整路径。

准备就绪后,按“ Enter ”,然后按键盘快捷键“ Ctrl + D ”保存您的作业并退出。

使用 at 命令安排作业。

要查看所有计划at的作业,请键入:

[linuxmi@fedora www.linuxmi.com]$ at -l

您将看到每个作业的唯一 ID、计划运行的日期和时间以及运行它的用户。要删除作业,请键入at -r后跟其唯一 ID 号。

at -r 3

您可以在 Linux 手册页at上查看命令选项的完整列表。

使用 sleep 命令在 Linux 上设置闹钟

在 Linux 上,该sleep命令将 shell 脚本或命令的执行暂停指定的时间。因此,这使它成为在 Linux 中设置警报的理想选择。

但是,在这里您没有at命令提供的灵活性。您所能做的就是指定应该在多长时间后触发一个动作。此外,您可以以秒 ( s)、分钟 ( m)、小时 ( h) 和天 ( d) 为单位设置延迟时间。

因此,要设置闹钟,您必须首先计算它应该在距当前时间多远的时间后发生。此外,sleep执行命令的终端窗口必须保持打开状态。关闭它将导致命令中止并且设置警报失败。

sleep要使用将在 8 小时后启动 VLC 播放器播放媒体文件的命令在 Linux 上设置闹钟,请键入:

[linuxmi@fedora www.linuxmi.com]$ sleep 8h &&vlc --intf dummy alarm.mp3

使用 sleep 命令在 Linux 上安排警报。

就是这样。请记住,您不应关闭终端窗口。同样,如果你想让闹钟在 20 分钟后播放,命令如下:

[linuxmi@fedora www.linuxmi.com]$ sleep 20m &&vlc --intf dummy alarm.mp3

您可以在Linux 手册页上查看 sleep 命令选项的完整列表。

通过 GNOME 时钟在 GNOME 中设置闹钟

您可以使用内置的 GNOME 时钟应用程序通过 GNOME 桌面环境设置闹钟。如果您还没有它,您可以通过从您正在使用的发行版的软件中心安装它来轻松获得它。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7184229.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-02
下一篇2023-04-02

发表评论

登录后才能评论

评论列表(0条)

    保存