2013-02-08 39 views
1

我正在使用linux屏幕配置複雜的jenkins作業。要創建一個新的屏幕,我跑:Linux屏幕 - 只有當它存在時纔會被殺死(jenkins作業)

screen -md -S jenkins_job 

然後去一些其他的工作,終於摧毀現有的屏幕,我跑:

screen -S jenkins_job -X quit 

但它可能在詹金斯發生腳本將某處失敗插圖中和立即放棄。然後屏幕終止命令將不會執行,屏幕將保持活動狀態。所以在開始工作時我想確保所有屏幕都被破壞。如果我在不存在的作業上使用screen -S jenkins_job -X quit,那麼shell將返回錯誤代碼,並且jenkins腳本也會失敗。

有沒有辦法有條件地銷燬一個屏幕(即銷燬屏幕,如果它存在,否則什麼也不做)?

回答

3

你可能希望把終止代碼爲trap調用:

trap 'screen -S jenkins_job -X quit' QUIT TERM INT EXIT 
+0

我跑在作業開始時這個陷阱,以確保屏幕會不管破壞什麼的整體詹金斯工作結果(QUIT或TERM - 成功或失敗) - 是嗎? – ducin 2013-02-08 12:05:06

+0

是的。在每個這些信號上,代碼都會運行。 – 2013-02-08 12:07:21

+0

我忘記了,如果您還想處理正常終止,請添加'EXIT'信號 – 2013-02-08 12:11:53

相關問題