Process
如何使用作業名稱(CentOS)檢查作業是否在集群上執行
我正在執行一個 bash 腳本來送出多個作業。僅當此類作業尚未執行時才會送出作業。我想在我的 bash 腳本中使用 if 語句來簡單地檢查“job123”是否已經在執行或在隊列中。
我嘗試了 qstat 和 qstatus 的不同選項,但我似乎無法按作業名稱進行檢查。如何檢索這些資訊?這些輸出也只是字元串,我也沒有任何運氣使用 grep 但我認為必須有一個特定的命令。
我已經能夠解決
qstat -r | grep -cw “作業名”
它給出了一個 0 或 1,然後我可以在 if 語句中使用它們。在我看來,這更像是一種黑客行為。-r 很重要,因為它顯示作業的全名。
Sun/Oracle Grid Engine 的
qstat
實用程序只允許您按使用者和作業 ID 過濾作業。如果您需要按作業名稱過濾,則必須這樣grep
做:qstat -u $USER | grep -w jobname
在 - 語句中使用
if
:if qstat -u $USER | grep -q -w "$jobname"; then # job is in the queue else # job is not in the queue fi
在網上簡單搜尋後,我還發現某些版本的
qstat
似乎可以使用-j
開關按作業名稱進行過濾:qstat -u $USER -j "$jobname"
我無法驗證這是否有效。該實用程序的其他版本顯然無法做到這一點(甚至不支持
-u
)。