瞎折腾时,执行了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做审计(事后型)。目前线上没使用,是我理想的状态;
上述这个入库可以参考伟哥文章: http://wiki.saltstack.cn/reproduction/salt-returners-fluent-mysql


回归正题,想要杀掉这个进程,咱得知道运行的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


更多内容,请查看下面两个链接,官方最实在,- -  
写的不是很好 - -,希望对大家有帮助