5

私はFabricを使用してpostgresサーバーを初期化します。コマンドの最後に「sleep1」を追加する必要があります。そうしないと、postgresサーバープロセスが説明やログのエントリなしで停止します。

sudo('%(pgbin)s/pg_ctl -D %(pgdata)s -l /tmp/pg.log restart && sleep 1' % env, user='postgres')

つまり、端末に次の出力が表示されます。

[dbserv]タスク'setup_postgres'を実行しています
[dbserv]run:/ bin / bash -l -c "sudo -u postgres /usr/lib/postgresql/9.1/bin/pg_ctl -D / data / pg -l / tmp / pg .log restart && sleep 1 "
[dbserv] out:サーバーがシャットダウンするのを待っています...完了
[dbserv] out:サーバーが停止しました
[dbserv] out:サーバーが起動しています

がないと&& sleep 1、/ tmp / pg.logには何もありません(ファイルは作成されますが)。また、postgresプロセスは実行されていません。睡眠があれば、すべてが正常に機能します。

(そして、ターゲットマシンのコマンドラインで同じコマンドを直接実行すると、スリープなしで正常に動作します。)

それは機能しているので、それは実際には問題ではありませが、とにかく私は尋ねています:誰かが睡眠が起こることを可能にしていることとその理由を知っていますか?

4

1 に答える 1

4

また、 ptyオプションを使用してfalseに設定し、ファブリックが疑似ttyを処理する方法に関連しているかどうかを確認することもできます。

于 2012-09-06T16:51:59.773 に答える