2012-09-06 57 views
5

我正在使用Fabric來初始化postgres服務器。我不得不在命令的末尾添加了「睡眠1」或以postgres服務器進程死無解釋或在日誌中的條目:爲什麼在調用pg_ctl重新啓動織物後需要睡眠

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

即,我看到在終端上的輸出:

[dbserv]執行任務 'setup_postgres'
[dbserv]運行:/斌/慶典-l -c「命令-u postgres的/usr/lib/postgresql/9.1/bin/pg_ctl -D /數據/ PG -l /tmp/pg.log restart & & sleep 1「
[dbserv] out:等待服務器關閉....完成
[dbserv]出:服務器停止
[dbserv]出:服務器啓動

沒有&& sleep 1,沒有什麼在/tmp/pg.log(雖然被創建的文件),並沒有Postgres的過程運行。隨着睡眠,一切正常。

(如果我直接執行目標機器的命令行相同的命令,它工作正常,沒有睡眠。)

由於它的工作,它不真的的事,但我要問反正:有人知道睡眠允許發生什麼,爲什麼?

回答

4

您也可以嘗試使用pty option將其設置爲false,並查看它是否與織物處理僞ttys有關。

+0

是的,這工作取代睡眠。我會投票,但我缺乏聲譽。 – wouldnt

+0

我討厭這個網站的其中一部分。它是否也阻止你接受?這種功能如何強制新用戶只能提問而不是詢問/回答,這很奇怪。 – Morgan

+0

恕我直言,它不*真的*回答這個問題,因爲它沒有說出發生了什麼,但如果在幾天內沒有其他答覆,我會接受答案。 – wouldnt

相關問題