我误解了fabtools.service.is_running的作用吗?

时间:2013-02-12 23:25:16

标签: python fabric upstart

我是否误解了fabtools?

我跑的时候:

status some-service

它回复

some-service stop/waiting

但是当我跑步时:

def blah():
    if fabtools.service.is_running('some-service'):
        print "some-service is running!"

它说它正在运行,当我清楚地知道它不是时。我误解了'is_running'的功能吗?

编辑:

查看源代码:

def is_running(service):
    """
    Check if a service is running.

    ::

        import fabtools

        if fabtools.service.is_running('foo'):
            print "Service foo is running!"
    """
    with settings(hide('running', 'stdout', 'stderr', 'warnings'), warn_only=True):
        res = sudo('service %(service)s status' % locals())
        return res.succeeded

它仍然让我感到困惑的是,它似乎检查服务是否存在而不是它是否正在运行

2 个答案:

答案 0 :(得分:0)

你是对的。实现仅检查服务是否存在而不是状态 我将该行修改为:

res = sudo('service {} status|grep "running"'.format(service))

......现在它有效。

答案 1 :(得分:0)

fabtools.service.is_running现在确实有效。

当我停止kibana服务并在python命令行模式下运行时,请参阅下面的内容:

>>> fabtools.service.is_running('kibana')
False  

当我启动kibana服务时,它返回true

>>> fabtools.service.is_running('kibana')
True