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 はコマンドをそのまま渡すだけです。