我目前正在使用unix at
命令来安排将来的工作。但是,如果我认为有必要,我也希望能够删除这些工作。有没有办法在创建工作后立即获得工作号码?我知道atq
可以显示待处理作业的列表,但我希望能够在创建作业后立即在PHP代码中获取作业号。我可以运行atq
命令但是如果在我获得队列中的最后一个作业之前创建了另一个作业呢?然后我没有正确的工作号码。
长话短说,有没有办法用at
命令创建一个作业,我可以在不使用atq
命令的情况下获得作业号?
例如,我的代码是:
exec('echo /usr/bin/php -f /home/site/public_html/test.php | sudo /usr/bin/at now');
我目前正在查看命令替换,一条评论建议如何从此php exec()
代码中获取作业编号。
当我尝试
时 var=$(echo /usr/bin/php -f /home/site/public_html/test.php | sudo /usr/bin/at now)
和echo $var
我得到一个空行。为什么不var
保持输出?
答案 0 :(得分:1)
$x=exec("echo sleep|at 14:00 2>&1");
$match="";
if(preg_match("/^job\s*(\d+)\s*/",$x,$match)){
$job= $match[1];
print "job: ". $job . "\n";
}
答案 1 :(得分:0)
尝试:
exec('at now "php /home/site/public_html/test.php" 2>&1 | grep job | awk "{print $2}", $output);
var_dump($output);
帮助来自: