≡菜单

使用9个示例了解atq,atrm,batch命令

您可以使用以下三个命令之一在UNIX / Linux中执行批处理作业:— 在, batch or cron.

在本文中,让我们回顾一下如何使用以下命令安排工作,查看工作以及删除工作 在命令.

您可以通过两种不同的方式安排工作时间:

  • 计划要在特定时间执行的作业。例如,7月3日上午10点
  • 安排从现在开始在相对时间内执行作业。例如,从现在起5个小时。

1.使用特定的日期和时间安排作业

句法:

$ 在 time date

例如,要在5月20日上午11点安排作业,请在命令中使用以下命令。

$ 在 11 am may 20

2.使用相对时间安排工作

您可以从现在开始使用相对时间安排要执行的作业。

句法:

$ 在 now + COUNT UNIT

例如,以下作业将从现在开始1分钟执行。

$ 在 now + 1 min

上面的示例将从stdin读取命令,并在一分钟后执行作业。当您在时间格式上输入错误时,您将得到错误‘乱码‘.

您可以使用以下命令在后台从现在开始安排1个小时,或者从现在开始安排1天:

$ 在 now + 1 hour

$ 在 now + 1 day

与at命令类似,您也可以使用crontab在计划的时间执行作业。请参阅我们前面的内容 15个cron命令示例 文章。

3.使用atq查看所有计划的at作业

您可以使用atq命令(或-l)来显示已调度或当前正在运行的所有at命令作业。

以下atq命令将列出所有未决 职位。显示的第一个数字是作业号,其后是要执行该过程的时间以及用户名。

$ 在q
4	2010-04-20 11:00 a sathiya

4.使用atrm删除/删除计划的作业

您可以使用atrm命令(或在-d处)删除特定作业。例如,要删除作业编号4,请使用以下atrm命令。

$ 在rm 4

5.仅当系统平均负载为<1.5使用批处理命令

您可以使用批处理命令计划作业,这将提示您输入命令,该命令将在系统平均负载小于1.5时执行。

$ batch

成功完成输入后,您将获得工作编号。要列出和删除批处理作业,可以使用上面说明的at命令。

6.使用-f选项从文件计划作业

首先,创建一个文本文件,其中包含您要使用at命令在后台执行的所有命令或shell脚本。

$ cat myjobs.txt
/home/sathiya/calculate-space.sh
/path/to/a/shell-script
/path/to/any/command/or/script

使用-f选项,可以执行at命令来从文件而不是stdin获取输入。

从at命令开始执行将在1小时后执行myjobs.txt中的所有作业。

$ 在 -f myjobs.txt now + 1 hour

7.允许和拒绝某些用户使用at作业

系统管理员可以控制谁可以安排工作,谁不能使用at.allow和at.deny文件。

首先,系统检查at.allow文件。如果存在at.allow,则仅允许在at.allow文件中指定的用户名使用at命令。

接下来,(如果at.allow不’(如果存在),系统将检查at.deny文件。如果存在at.deny,则不允许在at.deny文件中指定的用户名使用at命令。

默认情况下,大多数系统使用at.deny文件来阻止某些用户使用at命令,例如www-data,guest,backup,man user。

8.执行像nohup这样的命令

类似于 nohup命令 我们之前讨论过,您可以使用at命令在远程服务器上执行命令(或shell脚本),然后从服务器注销。

$ 在 -f myjob now + 1 min

$ exit

注意:即使您退出服务器,myjob仍将运行。

9.附加的命令时间格式

您可以在命令日期时间格式中使用以下任何一种格式:

$ 在 10 am tomorrow

$ 在 11:00 next month

$ 在 22:00 today

$ 在 now + 1 week

$ 在 noon

如果您喜欢这篇文章,您可能还会喜欢..

  1. 50个Linux Sysadmin教程
  2. 50个最常用的Linux命令(包括示例)
  3. 排名前25位的最佳Linux性能监视和调试工具
  4. 妈妈,我找到了! – 15个实用的Linux Find命令示例
  5. Linux 101 Hacks第二版电子书 Linux 101黑客手册

Bash 101 Hacks书 Sed和Awk 101黑客手册 Nagios Core 3书 Vim 101黑客手册

{ 16 评论… 加一 }

  • 坦美乔希 2010年6月15日,上午6:29

    不错的文章。

    谢谢,
    坦美

  • 拉杰库玛·阿格劳瓦尔(Rajkumar Agrawal) 2010年6月15日,上午6:42

    我喜欢此网页的nohup部分

  • shu 2010年6月15日,上午7:54

    那’s what I need!
    谢谢你的好文章!

  • 罗素 2010年6月15日,上午10:39

    让我烦恼的是我可以’无法找到列出待处理作业的任何方法。

  • 克劳斯 2010年6月15日,下午12:54

    @罗素–你读过这篇文章吗?
    ————————– snip ———————————————–
    3.使用atq查看所有计划的at作业

    您可以使用atq命令(或-l)来显示已调度或当前正在运行的所有at命令作业。
    ————————– snip ————————————————

  • 罗素 2010年6月17日,下午3:18

    好的,可以使用atq获得非常裸露的信息的列表,但它不会’告诉你很多。让我说一下我的用法如下:

    我使用at向自己发送电子邮件提醒。下面是我添加到.bashrc中的代码

    #添加提醒功能
    function 提醒{
    回声“format is: 提醒\”subject\” \”date\” –使用例如10月12日,以避免美国日期”
    回声“mail -s \”REMINDER $1\” [email protected] </home/me/remindermessage.txt" |at """01:00 $2"""
    }

    这使我可以轻松地在终端上设置提醒。如果输入以下示例:
    提醒"明天起诉生日" "26 July 2010"
    这将等到7月26日凌晨1点,然后发送电子邮件至 [email protected] 与主题行"明天起诉生日"。提醒只是电子邮件的主题行,因此它在我的电子邮件列表中脱颖而出。文件hintermessage.txt是电子邮件的正文,包含"This is a reminder – see subject".

    理想情况下,我想列出我已设置的待处理提醒,因为如果设置了特定提醒,我可能会忘记。我没有'我们无法找到如何使用atq列表来查找和查找电子邮件列表的方法。也许有人可以建议一种方法。 (我当然希望在那里'某处有一些软件,可以让我设置电子邮件提醒,但毫无疑问,该应用程序包含我不提供的其他数百项功能't want.)

  • 卡洛斯·加西亚(Carlos Garcia) 2010年6月23日,上午9:31

    如何在批处理命令中修改平均负载的最小值?
    谢谢

  • 萨提亚·莫西(SathiyaMoorthy) 2010年7月4日,上午7:16

    @卡洛斯

    启动atd时,您可以使用-l选项来完成。请参考man 在d进行进一步的说明。

  • 塞沙吉里 2010年9月21日,上午4:23

    如何知道工作计划者“at” command.

  • 普里蒂 2011年10月17日,上午1:51

    知识渊博的文章

  • 阿里夫 2012年6月15日,上午4:46

    我正在使用“at”命令来安排任务,如下所示。

    现在-f resume.sh + 2分钟

    我可以使用atq命令查看任务。它们似乎在正确的时间执行,因为此后将它们从队列中删除。但是我不’看不到预期的输出。

    我尝试了许多不同的组合,但无济于事。

    我还尝试了以下方法:

    现在+ 2分钟
    在> 回声“at running” >/home/user1/at_log.txt
    在>

    在d进程正在运行,并且该任务收到队列ID。但是,不会生成文件at_log.txt。

    我有什么想念的吗?
    如何调试atd?是否有atd执行的命令的日志文件?

    提前致谢

  • 布赖恩 2012年9月26日,上午7:18

    我觉得很困惑‘at’命令是不是所有正在运行的作业都显示在‘atq’ list…

    例如,我使用不同的队列名称运行作业。目前,我的系统正在队列中运行作业‘j’,但是它不会显示在‘atq’清单。另外,它不是‘=’工作,因为这是完全不同的工作。这使查看队列中的作业/正在运行的作业等非常令人困惑。任何线索还是这是一个错误???

    100691 Wed Sep 26 09:32:00 2012 t根
    100744 Wed Sep 26 09:13:00 2012 z根
    100745 Wed Sep 26 09:14:00 2012 e root
    97568 Wed Sep 26 14:41:00 2012 z root
    100701 Wed Sep 26 09:38:00 2012 z root
    100751 Wed Sep 26 09:13:00 2012 t根
    100529 Wed Sep 26 11:11:00 2012 v根
    98605 Wed Sep 26 20:28:00 2012 z root
    100702 Wed Sep 26 08:38:00 2012 =根
    100710 Wed Sep 26 09:22:00 2012 v根
    99365 Thu Sep 27 00:42:00 2012 d根
    100750 Wed Sep 26 09:16:00 2012 z root
    100752 Wed Sep 26 09:13:00 2012 z根

    有什么意见或这是一个错误吗?

  • 莫里斯 2013年3月20日,上午7:17

    有没有办法显示预定作业的内容?
    我可以在-l处看到列表,但是我想这样。工作3实际上会做什么?

  • 帕维尔 2013年9月5日,晚上10:17

    @莫里斯

    要查看预定作业的内容,请键入:

    在-c

    例:
    使用“at -c 2”看工作#2的内容

    在似乎将所有环境变量存储在作业本身中,并在运行时将其还原,因此您可能会获得很多输出。您实际输入的命令应该在最后一行。

  • 西坎 2015年7月25日,上午1:10

    谢谢……………………….

  • 苏菲安 2015年10月8日,下午12:06

    如何使用at命令查看计划作业的结果。我想通过at命令分配工作来查看2015年的日历

发表评论