2014-11-03 62 views
2

我正在使用一個庫來生成一整噸輸出到stderr(並且真的沒有辦法直接在代碼中抑制輸出;它是ROOT的Minuit2最小化工具被稱爲沒有辦法抑制輸出)。我正在通過LSF系統運行批處理作業,並且錯誤輸出文件太大以至於超過了我的磁盤配額。 ERK。在LSF批處理作業中通過grep -v重定向stderr

當我在一個shell本地運行,我做的:

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

抑制輸出,爲完成here. 這個偉大的工程,但不幸的是我似乎無法得到該人或任何變化它在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)' 
在錯誤日誌文件

任何想法如何能夠完成我想要的,或爲什麼這不工作?

謝謝!

+0

哦,順便說一下,我檢查了LSF在運行這些命令的外殼,它是tcsh的,一樣的,因爲我在本地使用。 – 2014-11-03 02:46:15

回答

1

您使用的語法在bash中工作,而不在csh/tcsh中。試着改變你的提交腳本的第一行

#!/bin/bash 
+0

呵呵。我以爲我嘗試過。十分感謝你的幫助!! :) – 2014-11-03 15:20:24

+1

出於好奇,爲什麼'python main.py $ INPUT_FILE 2>>(grep -v Minuit2 2&&1)'在交互式tcsh中工作?我不應該得到同樣的錯誤嗎? – 2014-11-03 15:21:14

+0

這是一個很好的問題,因爲我不認爲它應該。我以交互方式運行tcsh並且無法使其正常工作:我收到的錯誤消息是「缺少重定向的名稱」 – Squirrel 2014-11-03 15:36:35