2012-09-06 15 views
5

Sto utilizzando Fabric per inizializzare un server Postgres. Devo aggiungere un "sonno 1" alla fine del comando oi processi postgres server di morire senza spiegazioni o di un'iscrizione nel registro:Perché è necessario il riposo dopo la chiamata fabric a pg_ctl restart

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

vale a dire, vedo questa uscita sul terminale:

[dbserv] compito esecuzione '' setup_postgres
[dbserv] eseguire:/bin/bash -l -c "sudo -u postgres /usr/lib/postgresql/9.1/bin/pg_ctl -D/dati/pg -l /tmp/pg.log restart & & sleep 1 "
[dbserv] out: in attesa che il server si spenga .... done
[dbserv] out: server ha smesso
[dbserv] out: i processi del server a partire

Senza il && sleep 1, non c'è nulla in /tmp/pg.log (anche se il file viene creato), e non sono Postgres in esecuzione. Con il sonno, tutto funziona bene.

(E se eseguo lo stesso comando direttamente sulla riga di comando del computer di destinazione, funziona benissimo senza il sonno.)

Dal momento che sta funzionando, non è così davvero materia, ma mi sto chiedendo in ogni caso : Qualcuno sa che cosa sta permettendo il sonno e perché?

risposta

4

Si potrebbe provare anche a utilizzare pty option impostato su false e vedere se è correlato a come fabric gestisce pseudo-tty.

+0

Sì, funziona al posto del sonno. Mi piacerebbe votare, ma mi manca la reputazione. – wouldnt

+0

Odio quella parte di questo sito in realtà. Ti impedisce anche di accettare anche tu? È strano come la funzionalità costringa i nuovi utenti a essere in grado di fare solo domande, invece di chiedere/rispondere. – Morgan

+0

IMHO, non * realmente * risponde alla domanda poiché non dice cosa sta succedendo sotto il cofano, ma se non ci sono altre risposte in pochi giorni, accetterò la risposta. – wouldnt