Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Unix';at';命令并返回作业编号_Php_Unix - Fatal编程技术网

Php Unix';at';命令并返回作业编号

Php Unix';at';命令并返回作业编号,php,unix,Php,Unix,我目前正在使用unixat命令来计划将来的作业。但是,如果我认为有必要,我也希望能够删除这些工作。有没有办法在创建作业后立即获取作业编号?我知道atq可以显示待处理作业的列表,但我希望能够在创建作业后立即在PHP代码中获取作业编号。我可以运行atq命令,但如果在获得队列中的最后一个作业之前创建了另一个作业,该怎么办?那么我没有正确的工作号码 长话短说,在使用at命令创建作业后,是否有任何方法可以在不使用atq命令的情况下获取作业编号 例如,我的代码是: exec('echo /usr/bin/p

我目前正在使用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()
code获取作业编号

当我尝试

var=$(echo/usr/bin/php-f/home/site/public\u html/test.php | sudo/usr/bin/at now)

在shell和
echo$var
中,我得到一个空行。为什么
var
不保存输出?

试试:

exec('at now "php /home/site/public_html/test.php" 2>&1 | grep job | awk "{print $2}", $output);
var_dump($output);
帮助来自:


该命令打印一行,其中包含作业编号。将输出重定向到带有
$(…)
的变量,然后提取该字段。这种方法的问题是,“echo sleep”不仅在14:00执行,而且在运行脚本时也会执行。在您的情况下,是否可以在14:00运行它?为什么您认为在运行此脚本时会执行它?就我所知,当时只执行了回音。哦,对不起,现在我明白了。“echo”只是为了防止在脚本运行时执行睡眠。非常感谢。
$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";
}