2012-10-22 212 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。不幸的是,我認爲我給出的可執行文件是針對我的系統的,而不是之前的。