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

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

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

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

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

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

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. Попробуйте изменить первую строку сценария отправки на

#!/bin/bash
Другие вопросы по тегам