PHP系统命令中的批处理

PHP系统命令中的批处理,php,ubuntu,batch-file,jobs,Php,Ubuntu,Batch File,Jobs,这是一个Ubuntu系统。当用户向我们的网站提交作业时,我希望将其作为批处理作业运行。Cmd.sh是一个shell脚本。在终端中手动运行时,脚本执行良好,但由于某些原因,不会作为批处理作业运行。当前的PHP是: system("echo /var/www/dbCAN/data/blast/$jobid/cmd.sh | batch"); 它不会打印错误或崩溃,只是不会提交作业。此外,如果我将此代码更改为仅删除“|批处理”,文件将正常执行。我不想直接执行它的原因是,这是一个密集的过程,可能需要一

这是一个Ubuntu系统。当用户向我们的网站提交作业时,我希望将其作为批处理作业运行。Cmd.sh是一个shell脚本。在终端中手动运行时,脚本执行良好,但由于某些原因,不会作为批处理作业运行。当前的PHP是:

system("echo /var/www/dbCAN/data/blast/$jobid/cmd.sh | batch");

它不会打印错误或崩溃,只是不会提交作业。此外,如果我将此代码更改为仅删除“|批处理”,文件将正常执行。我不想直接执行它的原因是,这是一个密集的过程,可能需要一些时间,我们通常在用户的作业完成时向用户发送电子邮件(而不是一次运行多个作业)。有人知道为什么这样不行吗?我知道路径是正确的,但我不确定批量使用情况。感谢您的帮助:)

来自
人工批次

对于at和batch的命令都是从标准输入或 使用-f选项指定并执行的文件

所以,也许可以尝试
batch-f/var/www/dbCAN/data/blast/$jobid/cmd.sh

显然,
batch
不再支持参数(当我尝试使用
-f
参数运行它时,
batch不接受任何参数)。以下内容对我来说相当有效(显然使用了不同的文件路径):


参考:。

不幸的是,我尝试了,但行为没有改变,它仍然没有添加到批处理作业(或执行)。是否只想在后台运行它?如果是这样的话,像
bash/var/www/dbCAN/data/blast/$jobid/cmd.sh&
work这样的东西是否有效?实际上,您可能应该忽略我之前的建议。让用户生成后台作业似乎不是一个好主意。您更新的答案也不起作用。我尝试直接在终端中运行您的命令,但没有发生任何事情。PHP脚本中的
$jobid
变量中有什么?检查文件
/etc/at.allow
/etc/at.deny
以查看是否允许web用户使用
at
批处理
^at.deny中有www数据,这是问题的一部分。谢谢
at -q b -m now -f /var/www/dbCAN/data/blast/$jobid/cmd.sh