织物sudo默默地失败了

时间:2013-05-03 20:35:32

标签: celery sudo fabric

我在OS X 10.8.2上使用Fabric 1.6.0,在Ubuntu Lucid 10.04上的远程主机上运行命令。

在服务器上,我可以运行sudo /etc/init.d/celeryd restart来重启Celery服务。

我使用以下命令通过结构传递相同的命令:

@task
def restart():
    run('sudo /etc/init.d/celeryd restart')

或者

@task
def restart2():
    sudo('/etc/init.d/celeryd restart')

或使用命令行格式fab <task_that_sets_env.host> -- sudo /etc/init.d/celeryd restart

命令总是无声地失败 - 意味着结构没有返回任何错误,但celeryd报告它没有运行。

我在这里撕扯我的头发! Celery日志文件中没有任何相关内容,AFAIK Fabric应直接传递命令。

1 个答案:

答案 0 :(得分:2)

也许我参加派对的时间已经很晚了,如果这不起作用你就可以投票给我,但是我在/etc/init.d中运行其他程序时遇到了类似的问题。我的解决方案(与tomcat和mysql一起使用)是添加pty=False

@task
def restart():
    sudo('/etc/init.d/celeryd restart', pty=False)

关于此选项的Theres文档:

http://docs.fabfile.org/en/1.7/api/core/operations.html#fabric.operations.run