2012-09-06 6 views
5

Ich bin mit einem Stoff Postgres-Server zu initialisieren. Ich habe einen „Schlaf 1“ am Ende des Befehls oder die Postgres-Server-Prozesse ohne Angabe von Gründen sterben hinzuzufügen, oder einem Eintrag im Protokoll:Warum wird nach dem Stoff Anruf Schlaf benötigt Neustart pg_ctl

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

Das heißt, ich diese Ausgabe auf dem Terminal sehen:

[dbServ] ausführen Aufgabe
'setup_postgres' [dbServ] laufen:/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] aus: Warten auf Herunterfahren des Servers .... fertig
[dbServ] aus: Server gestoppt
[dbServ] aus: Server

Ohne die && sleep 1 beginnt, gibt es nichts in /tmp/pg.log (obwohl die Datei erstellt wird), und keine Postgres Prozesse Laufen. Mit dem Schlaf funktioniert alles gut.

(Und wenn ich den gleichen Befehl direkt auf Zielmaschine der Befehlszeile ausführen, funktioniert es ohne Schlaf in Ordnung.)

Da es funktioniert, funktioniert es nicht wirklich Angelegenheit, aber ich frage trotzdem : Weiß jemand, was der Schlaf erlaubt und warum?

Antwort

4

Sie könnten auch versuchen, die pty option Sets es falsch und sehen, ob es in engen Zusammenhang steht, wie pseudo-tty Stoffträger.

+0

Ja, das anstelle des Schlaf funktioniert. Ich würde es abstimmen, aber mir fehlt der Ruf. – wouldnt

+0

Ich hasse diesen Teil tatsächlich von dieser Website. Hält es dich auch davon ab, das zu akzeptieren? Es ist komisch, wie die Funktionalität Kräfte neue Benutzer nur in der Lage sein, Fragen zu stellen, statt fragen/Antwort. – Morgan

+0

IMHO, es beantwortet die Frage * wirklich * nicht, da es nicht sagt, was unter der Haube vorgeht, aber wenn es in ein paar Tagen keine anderen Antworten gibt, werde ich die Antwort akzeptieren. – wouldnt