我正在开发一个演示并使用GNU Parallel来并行运行我的网络抓取工具,以帮助缩短整体时间。我从php文件运行它,如下所示:
<?php
....
exec(" parallel -j 8 < commands.txt", $output);
....
?>
当我从终端运行这个文件时,它工作正常并完成了commands.txt
文件中给出的所有抓取工作,但是当我尝试从网页运行它时(我称之为php
文件),parallel
给出了以下错误:
parallel: Warning: $SHELL not set. Using /bin/sh.
Use of uninitialized value $ENV{"HOME"} in concatenation (.) or string at /usr/bin/parallel line 943.
Use of uninitialized value $ENV{"HOME"} in concatenation (.) or string at /usr/bin/parallel line 943.
Use of uninitialized value $ENV{"HOME"} in concatenation (.) or string at /usr/bin/parallel line 2207.
Use of uninitialized value $ENV{"HOME"} in concatenation (.) or string at /usr/bin/parallel line 2207.
有没有人遇到类似的问题,可以帮我解决这个问题?
提前致谢。
答案 0 :(得分:3)
GNU Parallel使用$ HOME和$ SHELL。 $ SHELL默认为/ bin / sh,但$ HOME没有默认值。所以设置$ HOME:
putenv('HOME=/tmp'); # Or some other place
您应该在$ HOME中拥有写入权限。
如果你想避免警告设置$ SHELL:
putenv('SHELL=/bin/sh');