2012-09-06 17 views
5

Estoy usando Fabric para inicializar un servidor postgres. Tengo que añadir un "sueño 1" al final del comando o los procesos del servidor postgres muero sin explicación o una entrada en el registro:¿Por qué es necesario dormir después de llamar a la tela para reiniciar pg_ctl?

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

Es decir, veo esta salida en el terminal:

[dbserv] tareas de ejecución 'setup_postgres'
[dbserv] ejecute:/bin/bash -l -c "sudo -u postgres /usr/lib/postgresql/9.1/bin/pg_ctl -D/data/pg -l /tmp/pg.log reiniciar & & dormir 1 "
[dbserv] salir: esperando a que el servidor se apague ... hecho
[dbserv] Salida: servidor dejó
[dbserv] a cabo: a partir de servidores

Sin la && sleep 1, no hay nada en /tmp/pg.log (aunque se crea el archivo), y no hay procesos son postgres corriendo. Con el sueño, todo funciona bien.

(Y si ejecuto el mismo comando directamente en la línea de comandos del equipo de destino, que funciona bien sin el sueño.)

Desde que está funcionando, no lo hace realmente importa, pero yo estoy pidiendo todos modos : ¿Alguien sabe lo que permite el sueño y por qué?

Respuesta

4

Puede intentar también usar el pty option para establecerlo en falso y ver si está relacionado con cómo maneja el tejido pseudo-ttys.

+0

Sí, eso funciona en lugar del sueño. Yo lo votaría, pero me falta la reputación. – wouldnt

+0

Odio esa parte de este sitio en realidad. ¿También te impide aceptar también? Es extraño cómo la funcionalidad obliga a los nuevos usuarios a solo hacer preguntas, en lugar de preguntar/responder. – Morgan

+0

En mi humilde opinión, no * realmente * responde la pregunta, ya que no dice lo que está pasando bajo el capó, pero si no hay otras respuestas en unos días, voy a aceptar la respuesta. – wouldnt

Cuestiones relacionadas