Kill

lsf bkill 所有 PEND 作業而不殺死 RUN 作業

  • March 1, 2022

我有很多在 lsf 上執行的 bjob​​s,jobs 有兩種狀態,RUN 和 PEND。而且我想殺死所有具有 PE​​ND 狀態的 bjob​​s,如何使用腳本來做到這一點?我認為一種硬編碼方式是將它們保存在一個文件中,然後解析每一行以獲取狀態和密鑰。如果 STAT 為 PEND,則將密鑰傳遞給bkill $key. 但是這個很複雜,有沒有什麼bkill函式可以直接做這個或者非硬編碼的方式來殺死特定狀態或者名字的job呢?

bjobs可以只列出掛起的作業-pbkill -p如果還能過濾作業,那就太好了,這樣bkill -p 0會殺死所有使用者的待處理作業。

我能想到的最好的就是一些貝殼魔法。雖然並不完美,但它應該涵蓋許多情況。例如,

bkill `bjobs -p -o id -noheader | tr '\n' ' '`

bjobs -p -o id -noheader列出使用者待處理作業的作業 ID。tr將其放入bkill預期的格式。一個潛在的問題是,如果作業列表太長,則會超出最大命令行長度或最大命令行參數數,因此 bash 會報錯。

這裡有一個小的競爭條件。作業可以在查詢和終止之間開始。

引用自:https://unix.stackexchange.com/questions/315839