我在 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 应该直接传递命令。