如何获取“at”作业的文件名和作业编号

如何获取“at”作业的文件名和作业编号

我们有一个脚本(生成器)来创建一系列at作业。这些at作业会触发另一个 PHP 脚本。生成器脚本循环并执行如下操作:

exec('/usr/bin/at 5:00 May 11, 2015 -f ' . $filename);

$filename 看起来像这样:

php /some-location/some-script.php arg1 arg2 arg3 

它工作得很棒,我们喜欢它。我想要弄清楚的是如何在/var/spool/at/filename生成器脚本运行时获取作业 ID 和文件名,以便我可以存储它,以防我们需要在安排后更改/取消。

有谁知道我如何从exec()创建at工作的人那里获取该信息?

答案1

根据 PHP 的文档执行():

如果存在输出参数,则指定的数组将填充命令输出的每一行。

您的版本是否at声明了职位编号?

$ echo /bin/true | at now + 1hour
job 1 at Fri Apr 24 12:00:00 2015

如果是这样,您可能会使用爆炸()使用空格分隔符来获取作业编号。

<?php
    // Remember to redirect stderr to stdout with "2>&1"
    $command = "echo /bin/true | at now + 1hour 2>&1";

    $at_message = explode(" ", exec($command, $output, $return_value));
    $job_number = $at_message[1];
    echo $job_number;
?>

相关内容