如何使用结构文件退出超级用户进程?

时间:2014-05-13 08:17:26

标签: python fabric supervisord supervisor

我正在使用fabric连接到远程主机。我打电话给主管看状态。但我不知道如何使用结构文件退出超级用户界面。怎么做?

我的fabfile是这样的:

from fabric.api import run
from fabric.api import env

env.hosts = [
    'my_host'
    ]

def my_fab():
    run("supervisorctl -u 'me' -p 'aaa'")

>>> fab my_fab
>>> # plenty of stdout 
>>> supervisor>                             # I'm stuckled here

1 个答案:

答案 0 :(得分:1)

这相当于使用supervisorctl而非使用fabric

避免对命令进行fab调用,需要用户交互

Fabric对命令执行一次性调用,然后返回。在控制台上不应该是长期活动。您的问题的解决方案不是进入交互模式(等待进一步的输入),而是仅在非交互模式下调用supervisor

以非交互模式

调用supervisorctl

Supervisor控制命令提供交互式和非交互式模式。

你是非交互模式。

E.g。在我的安装中,我有一个名为logproxy

的服务

以这种方式呼叫supervisorctl

$ supervisorctl status logproxy
logproxy                         STOPPED    Not started

将此应用于您的fab任务将使其正常工作。

以下示例代码来自"欢迎使用Fabric!"它看起来像是:

from fabric.api import run

def super_status():
    uname = "zen"
    pswd = "then"
    cmd = "supervisorctl -u {uname} -p {pswd} status logproxy".format(uname=uname, pswd=pswd)
    # to see the command you are going to call, just for show
    print cmd
    # and run it
    run(cmd)

并将被使用。

$ fab -l

列出来。

并调用任务super_status

$ fab super_status -H localhost