linux在午夜运行什么命令,在Linux中如何使用at命令安排任务

在Linux系统上,at命令允许用户在特定时间安排一次性任务,不同于cron用于定期重复任务。使用at,只需指定时间并输入命令,如重启系统或运行脚本。atq和atrm命令分别用于查看和删除作业队列中的任务。以root权限运行at作业,可以使用sudo。此外,通过/etc/at.deny或/etc/at.allow文件控制用户对at的访问。
摘要由CSDN通过智能技术生成

原标题:在Linux中如何使用at命令安排任务

at vs cron

对于那些使用 cron 在 Linux 系统上安排任务的人来说,at 命令类似于 cron,因为你可以在选定的时间调度任务,但是 cron 用于定期运行的作业 —— 甚至是每年仅一次。大多数 cron 作业的频率都设置为每天、每周或每月运行一次,不过你可以控制运行的频率和时间。

另一方面,at 命令用于仅运行一次的任务。想在午夜重启系统?没问题,只要你有适当的权限,at 可以为你完成此操作。如果你希望系统在每个星期六凌晨 2 点重启,那么改用 cron。

使用 at

at 命令很容易使用,只需记住几件事。一个简单使用 at 的例子类似于这样:

$ at 5:00PMat> date >> thisfileat>

在输入 at 和应该运行命令的时间,at 会提示你在设定时间会运行该命令(此例中是 date 命令)。输入 ^D(Ctrl + d)来完成请求。

假设我们在下午 5 点之前设置这个 at 命令,那么这个日期和时间将在当天下午 5 点添加到名为 thisfile 文件的末尾。否则,该命令将在第二天下午 5 点运行。

与 at 命令进行交互时,可以输入多个命令。如果你要同时运行多个命令,只需输入多个命令行即可:

$ at 6:22warning: commands will be executed using /bin/shat> echo first >> thisfileat> echo second >> thisfileat>

在上面的命令中,我们使用了一个普通的用户账户,将一些简单的文本添加到该用户主目录的文件中。如果在上午 6:22 之后运行这些命令,那么命令会在第二天运行,因为 6:22 表示上午 6:22。如果你想在下午 6:22 运行,使用 6:22 PM 或者 18:22。6:22 PM 这样也是可以工作的。

你也可以通过使用 at 来安排命令在指定的日期或时间运行,例如 10:00AM April 15 2021或 noon + 5 days(从今天起 5 天内的中午运行),以下是一些例子:

at 6PM tomorrowat noon April 15 2021at noon + 5 daysat 9:15 + 1000 days

在指定要运行的命令并按下 ^D 后,你会注意到 at 命令为每个请求分配了一个作业编号,这个数字将显示在 at 命令的作业队列中。

$ at noon + 1000 dayswarning: commands will be executed using /bin/shat> date >> thisfileat> job 36 at Tue Dec 27 12:00:00 2022 <== job # is 36

检查队列

你可以使用 atq(at queue)命令来查看 at 作业队列:

$ atq32 Thu Apr 2 03:06:00 2020 a shs35 Mon Apr 6 12:00:00 2020 a shs36 Tue Dec 27 12:00:00 2022 a shs34 Thu Apr 2 18:00:00 2020 a shs

如果你需要取消队列中的一个作业,使用 atrm(at remove)命令和作业编号:

$ atrm 32$ atq35 Mon Apr 6 12:00:00 2020 a shs36 Tue Dec 27 12:00:00 2022 a shs34 Thu Apr 2 18:00:00 2020 a shs

你可以使用 at -c 命令来查看安排任务的详细信息,其它详细信息(活动的搜索路径等)也可以看到,但是输出的最后一行将显示计划运行的命令。

$ at -c 36 | tail -6cd /home/shs || {echo 'Execution directory inaccessible' >&2exit 1}date >> thisfile

注意,该命令显示首先会测试是否可以通过 cd 命令进入用户目录。如果不可以,作业将退出并显示错误。如果可以,则运行在 at 中指定的命令。它将命令视为 “进入 /home/shs 或退出并显示错误”。

以 root 身份运行作业

要以 root 身份运行 at 作业,只需将 sudo 与你的 at 命令一起使用,如下所示:

$ sudo at 8PM[sudo] password for shs:warning: commands will be executed using /bin/shat> reboot nowat> job 37 at Wed Apr 1 16:00:00 2020

注意,root 的任务以 root 作为执行者显示在队列中。

35 Mon Apr 6 12:00:00 2020 a shs36 Tue Dec 27 12:00:00 2022 a shs37 Wed Apr 1 20:00:00 2020 a root <==

运行脚本

你还可以使用 at 命令来运行脚本,这里有一个例子:

$ at 4:30PMwarning: commands will be executed using /bin/shat> bin/trymeat>

禁止使用 at 命令

/etc/at.deny 文件提供了一种禁止用户使用 at 命令的方法。默认情况下,它可能会包含一个不允许的账户列表,例如 ftp 和 nobody。可以使用 /etc/at.allow 文件执行相反的操作,但是通常只配置 at.deny 文件。返回搜狐,查看更多

责任编辑:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值