Postgresql 为什么在结构调用pg_ctl重启后需要睡眠

Postgresql 为什么在结构调用pg_ctl重启后需要睡眠,postgresql,sleep,fabric,Postgresql,Sleep,Fabric,我正在使用Fabric初始化postgres服务器。我必须在命令末尾添加一个“sleep 1”,否则postgres服务器进程将在没有解释或日志中没有条目的情况下死亡: sudo('%(pgbin)s/pg_ctl -D %(pgdata)s -l /tmp/pg.log restart && sleep 1' % env, user='postgres') 也就是说,我在终端上看到这个输出: [dbserv]正在执行任务“设置\u postgres” [dbserv]run:

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

sudo('%(pgbin)s/pg_ctl -D %(pgdata)s -l /tmp/pg.log restart && sleep 1' % env, user='postgres')
也就是说,我在终端上看到这个输出:

[dbserv]正在执行任务“设置\u 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重启和睡眠1”
[dbserv]out:正在等待服务器关闭。。。。完成
[dbserv]out:服务器已停止
[dbserv]out:服务器正在启动

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

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


既然它起作用了,那就没什么关系了,但我还是要问:有人知道睡眠允许发生什么以及为什么吗?

你也可以尝试将它设置为false,看看它是否与fabric处理伪TTY的方式有关。

是的,这代替了睡眠。我会投赞成票,但我缺乏声誉。事实上,我讨厌这个网站的那部分。这是否也让你无法接受?奇怪的是,这个功能强迫新用户只能问问题,而不是问/答。嗯,它没有回答问题,因为它没有说引擎盖下发生了什么,但如果几天内没有其他答复,我会接受答案。你说新用户不能回答问题?这对我来说是个新闻。常见问题解答中的声誉部分提到需要积分才能投票等等。但是从这一点来看,回答是允许的,但是在一个人有50个声誉之前评论是不允许的(关于他们自己的问题)。