Qsub приводит к тому, что скрипт не работает: команда не найдена

Я запускаю скрипт «example.sh», который принимает 5 аргументов командной строки.

Это отлично работает:

./example.sh arg1 arg2 arg3 arg4 arg5

и он возвращает файл result1.txt

Теперь, когда я пытаюсь запустить его в кластере SGE (с "./" или без него):

qsub ./example.sh arg1 arg2 arg3 arg4 arg5

Это не приводит ни к какому результату.

В файле example.sh.eXXXXXXX я получаю:

arg1=1: Command not found.
arg2=2: Command not found.
...
and so on.

Я не уверен, почему это не работает с командой qsub. Я также вставил

#!/usr/bin/env bash

в верхней части моего сценария. Я некоторое время настраивал вещи, пробовал разные вещи, которые я нашел в stackoverflow и в Интернете, но пока безуспешно (я пробовал флаги -S и -F). Любые предложения приветствуются, чтобы указать мне в правильном направлении.


person Andrew Marderstein    schedule 27.03.2017    source источник
comment
Я немного погуглил, и на ум приходят две вещи: 1. Вы уверены, что солнечная сетка обеспечивает bash? (Я видел много примеров csh. Синтаксис csh немного отличается от синтаксиса bash.) 2. Я не смог найти ни одного примера с дополнительными аргументами командной строки, что вызывает у меня подозрения. Запись man qsub [ options ] [ command | -- [ command_args ]] выглядит так, будто это не поддерживается. Решение простое: оберните вызов скрипта с аргументами в новый скрипт. (То, что я предлагаю здесь, я узнал за последние полчаса. Если вы получите серьезный ответ, я удалю этот комментарий.)   -  person Scheff's Cat    schedule 27.03.2017


Ответы (1)


qsub не примет такие аргументы вашего сценария оболочки, но любой из них будет работать:

1) Поместите ./example.sh arg1 arg2 arg3 arg4 arg5 в другой скрипт, например. command.sh, а затем запустите qsub command.sh.

2) Введите полную команду в qsub в качестве стандартного ввода, например: echo ./example.sh arg1 arg2 arg3 arg4 arg5 | qsub.

person leekaiinthesky    schedule 09.06.2017