2012-10-22 219 views
1

我正在使用服务器,用户应该能够对数据库运行蛋白质序列,并使用名为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系统上编译的。切换到不同的可执行文件,并且完美无瑕地运行。

+0

你能显示./cmd.sh吗? – cdarke

+0

您可以将您的./cmd.sh的相关部分添加到您的发布中。什么是错误信息指向的? – shellter

+0

第一个代码块是cmd.sh – Nathan

回答

0

的解决办法是重新编译blastall可执行文件。它已经为Redhat编译,我正在使用Ubuntu。不幸的是,我认为我给出的可执行文件是针对我的系统的,而不是之前的。