Перенаправить stderr через grep -v в пакетное задание LSF

Я использую библиотеку, которая генерирует целую тонну вывода в stderr (и действительно нет способа подавить вывод непосредственно в коде, это минимизатор ROOT Minuit2, который известен тем, что не имеет способа подавить вывод). Я запускаю пакетные задания через систему LSF, и файлы вывода ошибок настолько велики, что они превышают мою квоту диска. Эрк.

Когда я запускаю локально на оболочке, я делаю:

python main.py 2> >( grep -v Minuit2 2>&1 )

для подавления вывода, как это делается здесь. Это отлично работает, но, к сожалению, я не могу понять, что это или какие-то варианты его работы при работе в LSF. Я думаю, это связано с тем, что LSF не порождает необходимую подоболочку, но это не понятно.

Я запускаю пакет, передавая LSF a submit script. Соответствующая строка:

python main.py $INPUT_FILE

который отлично работает, помимо вышеупомянутой проблемы с гигантскими файлами ошибок.

Когда я попытаюсь изменить эту строку на

python main.py $INPUT_FILE 2> >( grep -v Minuit2 2>&1 )

В конечном итоге

./singleSubmit.sh: line 16: syntax error near unexpected token `>'
./singleSubmit.sh: line 16: `python $MAIN $1 2> >( grep -v Minuit2 2>&1 )'

в файле журнала ошибок.

Любая идея, как я могу выполнить то, что хочу, или почему это не работает?

Спасибо, тонна!

Ответы

Ответ 1

Синтаксис, который вы используете, работает в bash, а не в csh/tcsh. Попробуйте изменить первую строку вашего представления script на

#!/bin/bash