我正在使用服务器,用户应该能够对数据库运行蛋白质序列,并使用名为blastall的可执行文件。服务器生成一个可执行文件,然后它应该使用批处理运行。但是,它似乎没有运行。这里是一个可执行的示例生成(cmd.sh):文件未找到,但文件存在
#!/usr/bin/env sh
cd /var/www/dbCAN
php -q /var/www/dbCAN/tools/blast.php -e -w /var/www/dbCAN/data/blast/20121019135548
凡在的那个端部的疯狂数量是基于提交作业时对自动生成的作业ID。有两个问题,我试图一次解决一个问题。第一个问题是,当手动执行(由我只需运行./cmd.sh),我收到以下错误:
sh: 1: /var/www/dbCAN/tools/blast/bin/blastall: not found
sh: 1: /var/www/dbCAN/tools/blast/bin/blastall: not found
sh: 1: -t: not found
但是,这并没有真正意义的我,作为指定的目录中不事实上包含blastall。它具有完整的rwx权限,并且沿途的每个目录都具有适当的权限。
在工具blast.php文件看起来是这样的:
try {
do_blast($opts["w"]);
$info['status'] = 'done';
$fp = fopen("$opts['w']/info.yaml","w")
fwrite($fp, Sypc::YAMLDump($info)); fclose($fp);
}
与它上面当然变量声明,以及do_blast功能看起来像这样(再次与它上面声明的变量和一个CD,所以目录工作):
function do_blast($workdir)
{
system("/var/www/dbCAN/tools/blast/bin/blastall -d data/blast/all.seq.fa -m 9 -p blastp -i $workdir/input.faa -o $workdir/output.txt")
system("/var/www/dbCAN/tools/blast/bin/blastall -d data/blast/all.seq.fa -p blastp -i $workdir/input.faa -o $workdir/output2.txt")
}
任何想法可能会导致此问题?我认为这可能是因为我正在运行它,它是由apache创建的,但rwx允许所有用户使用。如果需要,我可以包含更多的信息,但是我现在选择不这样做,因为编写PHP的原始人将所有内容都分解成了大量小文件,因此很难确定问题的确切位置。任何想法(如果不是完整的解决方案)非常赞赏。
编辑:找到解决方案。事实证明,blastall可执行文件是在不同的linux系统上编译的。切换到不同的可执行文件,并且完美无瑕地运行。
你能显示./cmd.sh吗? – cdarke
您可以将您的./cmd.sh的相关部分添加到您的发布中。什么是错误信息指向的? – shellter
第一个代码块是cmd.sh – Nathan