瞎折騰時,執行了state.highstate時,出現錯誤,手抖就ctrl + c,就導致線上minion裏關閉但未啓動(這是和我線上SLS有關),然而剛剛的同步操作仍在minion上執行。
類似下面這樣
localhost: Data failed to compile: ---------- The function "state.highstate" is running as PID 3799 and was started at 2013, Apr 10 16:54:19.200123
然而現在想執行一個state.sls,可是有個job正在執行導致無法執行,這麼辦呢。?是否有像kill功能殺掉它。。?
有,在salt 0.9.7版本就引入了jobs管理功能,利用此功能可以管理線上所有jobs,同時也能審計。
對master發出去的jobs,把job id、執行函數、返回結果統統入庫,這樣可以對發出去的jobs做審計(事後型)。目前線上沒使用,是我理想的狀態;
迴歸正題,想要殺掉這個進程,咱得知道運行的job還在哪些機器上運行,job id號是多少。
利用salt-run jobs.active,可以看到當前正在運行的所有jobs
#salt-run jobs.active '20140211102239075243': //job id Arguments: [] Function: state.highstate Returned: - 1 - 03 - 02 - 4 - 5 //正在運行jobs的minion - 3 - 7 - 1 - 2 - jid Running: [] Target: '*' Target-type: glob User: root
知道job id,我們就可以查看這個job具體執行內容,利用salt-run jobs.lookup_id 20140211102239075243,這裏信息太多我就不貼了
要想kill掉這個進程,需要使用saltutil模塊的函數。
kill有兩個方式,一個野蠻(kill_job),一個溫柔(term_job),對待saltstack如同女人嘛,我就溫柔點。。
#salt '*' saltutil.signal_job 20140211102239075243 15
更多內容,請查看下面兩個鏈接,官方最實在,- -
寫的不是很好 - -,希望對大家有幫助