1

我误解了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

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

4

2 回答 2

0

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

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

...现在它可以工作了。

于 2013-06-19T11:21:19.677 回答
0

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

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

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

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

>>> fabtools.service.is_running('kibana')
True
于 2018-03-23T05:04:55.260 回答