saltstack执行nohup遇到的问题

saltstack执行nohup遇到的问题

saltstack后台执行任务或者使用nohup来远程启动某些任务时,会有卡住的问题。

结果分析:

  1. 执行命令后卡住,但是服务器正常启动了。
    例如: salt test-host cmd.run ‘python -m SimpleHTTPServer 8080’
    该命令为启动一个python的web服务8080的监听端口。
  2. saltstack原理是发布任务到salt-minion上进行执行,等待命令结束后返回master端结果,由于执行nohup等命令时,服务会夯住,无法结束进程,也就没有返回退出code,master端就认为任务还在执行中,导致salt卡住。

尝试解决:

  1. 查看salt官网,在新版的salt中,使用如下命令可以不等待结果直接返回。
salt test-host cmd.run "python -m SimpleHTTPServer 8080" bg=True

经过查看后发现可以实现问题。
查看代码发现:

    if bg:
        ignore_retcode = True
        use_vt = False

然后结合官网进行查看,https://docs.saltstack.com/en/latest/ref/modules/all/salt.modules.cmdmod.html#module-salt.modules.cmdmod
基本就可以解决这个问题了。

  1. 查看state下的cmd.run命令。发现在配置文件中设置为类似的配置不生效。
cmd_ret:
  cmd.run:
    - name: nohup python -m SimpleHTTPServer 8080 &
    - use_vt: False
    - ignore_retcode: True

应该是state方式还不支持后台运行的方式。

解决问题:
cmd.run方法中的bg参数是2016.3.0版本中添加的,如果你的版本不支持,则需要升级或者采用其他办法。

其他解决办法:
如果不使用这种办法,可以使用supervisord服务启动的方式来启动服务,方便管理,也可以对服务进行监控,进行自动拉起。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值