gpt4 book ai didi

postgresql - 为什么在 fabric 调用 pg_ctl restart 后需要 sleep

转载 作者:行者123 更新时间:2023-11-29 11:29:01 26 4
gpt4 key购买 nike

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

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

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

[dbserv] Executing task '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: waiting for server to shut down.... done
[dbserv] out: server stopped
[dbserv] out: server starting

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

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

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

最佳答案

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

关于postgresql - 为什么在 fabric 调用 pg_ctl restart 后需要 sleep ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12291978/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com