2013-05-03 62 views
3

我在OS X 10.8.2上使用Fabric 1.6.0,在Ubuntu Lucid 10.04上的遠程主機上運行命令。面料sudo默默無力

在服務器上,我可以運行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

的命令總是失敗默默:

我通過面料使用過相同的命令錯誤,但芹菜報告說它沒有運行。

我正在把我的頭髮拉出來! Celery日誌文件中沒有任何相關內容,AFAIK Fabric應該直接傳遞命令。

+1

你可能想看看https://github.com/mher /芹菜部署。它使用結構來重新啓動遠程主機上的芹菜節點 – mher 2013-05-04 13:29:18

+0

如果在SSH進入服務器後運行相同的命令,輸出是什麼? – 2013-05-08 23:36:02

+0

@Bibhas該命令在服務器上運行時總是成功,並且在通過結構運行時總是失敗。 – knite 2013-05-09 20:43:22

回答

2

也許我對派對來說很晚,如果這不起作用,可能會讓我失望,但我在運行其他程序的同時在/etc/init.d中遇到了類似的問題。我的解決方案(使用Tomcat和MySQL)是添加在這裏的選項pty=False

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

即使世界文檔:

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