2012-05-08 10 views
9

Mam następujący shellscript:„Nieoczekiwany koniec pliku” i „Błąd importowania definicji funkcji” błąd uruchomiony shellscript użyciu qsub

#!/bin/sh 
cd /sw/local/bin/ 
export LD_LIBRARY_PATH=/sw/local/lib:/usr/local/Trolltech/Qt-4.7.2/lib:$LD_LIBRARY_PATH 
./FeatureFinderRaw -in /homes/JG-C1-18.mzML -out /homes/test_remove_after_use.featureXML -threads 20 

To działa dobrze, gdy uruchomię go z własnego wiersza polecenia, ale kiedy spróbuj zrobić:

qsub -q ningal.q -cwd -V -o /homes/queue.out -e /queue.err featureFind_C1-18_20t.sh 

pojawia się następujący błąd:

/bin/sh: module: line 1: syntax error: unexpected end of file 
/bin/sh: error importing function definition for `module' 
./FeatureFinderRaw: error while loading shared libraries: libOpenMS.so: cannot open shared object file: No such file or directory 
/bin/sh: module: line 1: syntax error: unexpected end of file 
/bin/sh: error importing function definition for `module' 
./FeatureFinderRaw: error while loading shared libraries: libQtWebKit.so.4: cannot open shared object file: No such file or directory 
/bin/sh: module: line 1: syntax error: unexpected end of file 
/bin/sh: error importing function definition for `module' 
./FeatureFinderRaw: error while loading shared libraries: libQtWebKit.so.4: cannot open shared object file: No such file or directory 
/bin/bash: module: line 1: syntax error: unexpected end of file 
/bin/bash: error importing function definition for `module' 
./FeatureFinderRaw: error while loading shared libraries: libQtWebKit.so.4: cannot open shared object file: No such file or directory 
/bin/sh: module: line 1: syntax error: unexpected end of file 
/bin/sh: error importing function definition for `module' 
./FeatureFinderRaw: error while loading shared libraries: libQtWebKit.so.4: cannot open shared object file: No such file or directory 
/bin/sh: module: line 1: syntax error: unexpected end of file 
/bin/sh: error importing function definition for `module' 

nie rozumiem, dlaczego mam tego e rror przy użyciu qsub, ale nie podczas uruchamiania skryptu bezpośrednio na tym samym komputerze klastra. Jak mogę uruchomić skrypt za pomocą qsub?

Odpowiedz

2

Z nieznanych mi powodów dodanie średników na końcu każdej linii rozwiązało problem.

+0

W każdym wierszu pliku/usr/share/Modules/init/bash? (Mając ten sam problem tutaj). – Eureka

+0

Nie na końcu powłoki skoroszytowej –

1

Najbardziej prawdopodobną przyczyną jest zapisanie pliku z końcówkami linii DOS (\ r \ n) zamiast końcówek linii POSIX (\ r), jeśli dodanie średników spowoduje różnicę.

+0

Przebiegłem dos2unix, co nie miało znaczenia. Napisałem go również na Linuksie i działa, gdy uruchomię go w tym samym klastrze linuxowym bez użycia qsub. –

4

In/usr/share/Modules/init/bash skomentował wiersz "export -f module".

W normalnej powłoce logowania moduł modules.sh zostanie wywołany z profilu.d, więc polecenie modułu jest dostępne. W powłoce niezalogowanej, jak w przypadku skryptu otokowego app, pobiera się najpierw powyższy plik.

Ogólnie w skryptach aplikacji po sourcingu powyżej pliku ponownie wydają polecenie "moduł ładowania aplikacji/dostawcy/aplikacji", co oznacza dodatkowe źródło.

referencyjny :: - http://gridengine.org/pipermail/users/2011-November/002019.html

9

Również ten problem w skrypcie otoki, który używa

qsub -shell no -b yes -cwd -V somescript.bash arg1 arg2 etc 

jeśli używasz go do przedstawienia innego skryptu powłoki bash. Produkuje annonying

/bin/sh: module: line 1: syntax error: unexpected end of file 
/bin/sh: error importing function definition for `BASH_FUNC_module' 

(jest to Sun Grid Engine 211,11 działa na CentOS 6.6) Okazuje się, że sprawy są rozwiązywane przez po prostu umieszczenie następujących na górze skryptu otoki (nie zawiniętego skryptu):

unset module 

To wszystko.

Powiązane problemy