【问题标题】:Why is sleep needed after fabric call to pg_ctl restart为什么在结构调用 pg_ctl restart 后需要睡眠
【发布时间】:2012-09-06 01:55:23
【问题描述】:

我正在使用 Fabric 来初始化 postgres 服务器。我必须在命令末尾添加“sleep 1”,否则 postgres 服务器进程会死掉而没有解释或日志中的条目:

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

也就是说,我在终端上看到了这个输出:

[dbserv] 执行任务“setup_postgres”
[dbserv] 运行:/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] 出:服务器已停止
[dbserv] out: 服务器正在启动

没有&& sleep 1,/tmp/pg.log 中没有任何内容(尽管文件已创建),并且没有 postgres 进程正在运行。随着睡眠,一切正常。

(如果我直接在目标机器的命令行上执行相同的命令,它可以在没有睡眠的情况下正常工作。)

既然它正在工作,它真的并不重要,但我还是要问:有人知道睡眠允许发生什么以及为什么发生吗?

【问题讨论】:

    标签: postgresql sleep fabric


    【解决方案1】:

    您也可以尝试使用 pty option 将其设置为 false 并查看它是否与 Fabric 如何处理伪 tty 相关。

    【讨论】:

    • 是的,它可以代替睡眠。我会投赞成票,但我缺乏声誉。
    • 我实际上讨厌这个网站的那一部分。它是否也让你无法接受?奇怪的是,该功能如何迫使新用户只能提问,而不是提问/回答。
    • 恕我直言,它并没有 * 真的 * 回答这个问题,因为它没有说明幕后发生的事情,但如果几天后没有其他回复,我会接受回答。
    • 你说新用户不能回答问题?这对我来说是个新闻。
    • FAQ 的声望部分,stackoverflow.com/faq#reputation,提到需要点数来支持,等等。但是看着那个,回答是允许的,但在一个有 50 声望之前发表评论(关于不是他们自己的问题)不允许。
    猜你喜欢
    • 2013-11-10
    • 1970-01-01
    • 2021-04-12
    • 2021-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多