代码之家  ›  专栏  ›  技术社区  ›  Cloud

从“at”作业的非交互式队列中获取作业号

  •  0
  • Cloud  · 技术社区  · 7 年前

    我正在写一个脚本,它偶尔会通过 at 命令。为了以一种自动化的、非交互的方式实现这一点,我 echo 要对文件执行的命令,即:

    echo "ls -la" > cmd.txt
    

    然后,我通过以下方式安排命令在2分钟后运行:

    at -f cmd.txt now + 2 min
    

    我想,以一种自动化的、非交互的、确定性的方式;确定与我的脚本刚刚排队的任务相关联的作业号。不幸的是,返回代码中似乎没有提供任何内容(即。 echo $? ),或者我可以发出的CLI命令。我总是能刮 stdout 数据,即:

    $> A=$(at -f cmd.txt now + 1 min)
    warning: commands will be executed using /bin/sh
    job 6 at Fri Mar 8 07:18:00 2019

    标准输出 数据,因为我想避免


    问题

    在 我的剧本刚刚排好队?


    在

    0 回复  |  直到 7 年前
        1
  •  1
  •   bishop    7 年前

    记录 at 排程前的队列状态,排程作业,然后查找添加项:

    $ date
    Fri Mar  8 10:33:34 EST 2019
    $ atq
    3   2019-03-08 10:34 a bishop
    $ atq > atq.1
    $ echo "ls -l" > cmd.txt
    $ at -f cmd.txt now + 2 min
    job 4 at 2019-03-08 10:36
    You have new mail in /var/spool/mail/bishop
    $ atq > atq.2
    $ comm atq.1 atq.2
    3   2019-03-08 10:34 a bishop
        4   2019-03-08 10:36 a bishop
    $ comm -23 atq.1 atq.2 | awk '{print $1}' # completed jobs
    3
    $ comm -13 atq.1 atq.2 | awk '{print $1}' # added jobs
    4
    

    at -q 排队)。

        2
  •  0
  •   nullPointer    7 年前

    atq