2013-04-05 87 views
6

將作業腳本提交給PBS排隊系統時,自動或由用戶指定壁掛時間,例如,通過在PBS作業腳本中獲取壁掛時間

#PBS -l walltime=1:00:00 

問題是如果這個時間可以從作業腳本訪問。有沒有一個環境變量或其他方式來獲得這個walltime。

最後,作業腳本應該不時決定是否有足夠的時間做更多的工作,以便作業不會被排隊系統消滅。

更新:

至少如果用戶指定的walltime在資源列表,我可以提出以下解決方法(工作對於bash)

read _ _ PBS_WALLTIME <<< `qstat -f $PBS_JOBID | grep "Resource_List.walltime"` 

從解析walltime qstat輸出並將值放入PBS_WALLTIME變量中。因此,命令

echo $PBS_WALLTIME 

將產生類似

1:00:00 
+0

在PBS 4.2.8(可能還有其他版本)中,$ PBS_WALLTIME變量以秒爲單位存儲掛壁時間,所以'echo'將輸出'3600'而不是'1:00:00'。 – MasterHD 2015-09-07 08:36:48

回答

5

這是存儲在環境變量$ PBS_WALLTIME。

當然,這是TORQUE,我不確定你正在使用哪個PBS排隊系統。

+0

當然,這取決於我正在使用的集羣。一個運行TORQUE和另一個PBS Pro。不幸的是,即使在TORQUE集羣上,$ PBS_WALLTIME變量也沒有定義。所以這可能不是標準。 – dastrobu 2013-04-12 14:34:52

+0

什麼版本的TORQUE? – dbeer 2013-04-12 17:20:56

+0

我不確定,如果我能正確回答這個問題。我如何獲取版本信息?可能你要求PBS版本設置爲2.1.10(取自'qmgr -c「打印服務器''的輸出)。 – dastrobu 2013-04-14 20:50:34

1

我一直在尋找答案,上面的評論給了我一個想法,似乎工作得很好。您可以使用了qstat和使用sed抓住從它的相關信息:

qstat -f $PBS_JOBID | sed -rn 's/.*Resource_List.walltime = (.*)/\1/p' 

把這個在你的PBS腳本將打印出來的值,你可以使用標準的bash來的這個輸出存儲在一個變量:

WALLTIME=$(qstat -f $PBS_JOBID | sed -rn 's/.*Resource_List.walltime = (.*)/\1/p') 

您也可以使用它來獲取PBS_ *環境變量中不可用的其他信息,例如爲作業分配的內存量以及其他可能的東西。