Перенаправить 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