原理说明
我们每执行一次salt命令就会产生一个Job,在日常的管理工作中,我们需要管理这些Job。比如由于网络原因,一个Job执行中断了,需要知道Job目前的工作状态。再比如我们要kill掉一个刚刚执行的Job。
Jid: job id, 格式为%Y%m%d%H%M%S%f
master在下发指令消息时, 会附带上产生的jid.
minion在接收到指令开始执行时, 会在本地的cachedir(默认是/var/cache/salt/minion/)下的proc产生以该jid命名的文件。可以在执行过程中master查看当前任务的执行情况. 指令执行完毕将结果传送给master后,删除该临时文件。
master将minion的执行结果存放在本地/var/cache/salt/master/jobs, 默认缓存24小时(可以通过修改master配置文件keepjobs选项调整)
Job常用管理
saltutil模块中的job管理方法
- saltutil.running #查看minion当前正在运行的jobs
- saltutil.find_job<jid> #查看指定jid的job(minion正在运行的jobs)
- saltutil.signal_job<jid> <single> #给指定的jid进程发送信号
- saltutil.term_job <jid> #终止指定的jid进程(信号为15)
- saltutil.kill_job <jid> #终止指定的jid进程(信号为9)
salt runner中的job管理方法
- salt-run jobs.active#查看所有minion当前正在运行的jobs(在所有minions上运行saltutil.running)
- salt-run jobs.lookup_jid<jid>
Job调试举例
- 启用一个一直停留在后台中运行的异步job:
salt --async gqtest cmd.run "ping qq.com"
- 查看当前活动的jobs:
salt-run jobs.active
- 查看指定job id的返回结果:
salt-run jobs.lookup_jid "JOB_ID"
- 杀掉一个指定的job:
salt gqtest saltutil.term_job "JOB_ID"
salt job执行结果在缓存中保留24小时后,会被自动清除。