0 votos

Ejecutar Postgres como Daemon de lanzamiento

Estoy trabajando en la creación de un servidor psql y, por tanto, me gustaría que postgres se ejecutara siempre que el ordenador esté encendido, independientemente de si estoy conectado. (La máquina está ejecutando OS X Yosemite.) He configurado un demonio de lanzamiento para hacer esto, pero no funciona. syslog da los siguientes mensajes de error:

Jul 14 17:43:01 user@server sudo[276]:     jaia : TTY=ttys000 ; 
PWD=/Users/jaia ; USER=root ; COMMAND=/usr/bin/nano /Library/LaunchDaemons/homeb
rew.mxcl.postgresql.plist
Jul 14 17:44:35 localhost com.apple.xpc.launchd[1] (homebrew.mxcl.postgresql): T
his service is defined to be constantly running and is inherently inefficient.
Jul 14 17:44:44 localhost com.apple.xpc.launchd[1] (homebrew.mxcl.postgresql): S
ervice only ran for 9 seconds. Pushing respawn out by 1 seconds.
Jul 14 17:44:45 localhost com.apple.xpc.launchd[1] (homebrew.mxcl.postgresql): S
ervice only ran for 0 seconds. Pushing respawn out by 10 seconds.

Después, el último mensaje se repite indefinidamente.

Aquí está mi archivo .plist. La razón de sudo -u _postgres es que postgres no puede ejecutarse como Root, lo que los demonios de lanzamiento hacen por defecto.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>KeepAlive</key>
  <true/>
  <key>Label</key>
  <string>homebrew.mxcl.postgresql</string>
  <key>ProgramArguments</key>
  <array>
    <string>sudo</string>
    <string>-u</string>
    <string>_postgres</string>
    <string>/usr/local/bin/pg_ctl</string>
    <string>-D</string>
    <string>/usr/local/var/postgres</string>
    <string>start</string>
  </array>
  <key>RunAtLoad</key>
  <true/>
  <key>UserName</key>
  <string>_postgres</string>
  <key>WorkingDirectory</key>
  <string>/usr/local/var/postgres</string>
  <key>StandardErrorPath</key>
  <string>/usr/local/var/postgres/server.log</string>
</dict>
</plist>

MÁS INFORMACIÓN: Cargar el trabajo manualmente vía ssh da el mensaje de error poco gramatical "Could not find domain for". Cargarlo en la propia máquina da "/Library/LaunchDaemons/homebrew.mxcl.postgresql.plist: El archivo existe".

¿Qué puede estar fallando aquí?

1voto

LCC Puntos 572

Deja fuera el sudo , -u y _postgres en ProgramArguments . launchd se encarga de esto con el UserName clave.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X