El problema inmediato es que su .plist archivo no tiene el formato correcto -- el contenido de <string>...</string>
debe ser codificado con entidades HTML, es decir, &
necesita ser codificado como &
(nota: puede comprobar el formato de .plist archivos con plutil -lint filename.plist
). Pero hay algunos otros cambios que necesitan ser hechas...
Los programas de inicio con launchd es bastante diferente que a partir de ellos desde una shell. La mayor diferencia es que a partir de la cáscara, desea que el programa pase a un segundo plano y ejecutar de forma independiente de la concha, por lo que se envuelve en nohup ... &
. Con launchd, es realmente el mejor para el programa para permanecer en el "primer plano" para launchd puede mantener un ojo en ella.
También, los elementos de ProgramArguments no analizada por un proyectil, por lo que el listado de comando y sus argumentos, con espacios entre ellos no trabajan, hacen cada argumento un elemento separado de la matriz.
Aquí está mi intento de una sinergia .plist. Yo no he probado este, por lo que puede necesitar un poco de ajuste para que funcione correctamente (ver notas abajo):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC -//Apple Computer//DTD PLIST 1.0//EN http://www.apple.com/DTDs/PropertyList-1.0.dtd >
<plist version="1.0">
<dict>
<key>Label</key>
<string>local.synergy</string>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/synergys</string>
<string>-f</string>
<string>--config</string>
<string>/Users/USER/bin/conf/synergy.conf</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>Nice</key>
<integer>10</integer>
<key>KeepAlive</key>
<false/>
<key>AbandonProcessGroup</key>
<true/>
</dict>
</plist>
Los últimos dos teclas por encima de lidiar con la launchd debe reaccionar si/cuando el synergys programa se cierra. De forma predeterminada, mata a cualquier sobreviviente subprocesos y lanza una nueva instancia; estos dos teclas suprimir ambas partes, que puede o no puede ser lo que usted desea. También, una cosa esto no hace que su versión con nohup
hace es redirigir la entrada estándar stdin y stdout nohup.(en caso de que el terminal va de distancia); en lugar IIRC launchd registros de las cosas que se envían a ellos. Si synergys es en el habbit de enviar la salida, es posible que desee agregar algo como esto para el .plist:
<key>StandardOutPath</key>
<string>/dev/null</string>
<key>StandardErrorPath</key>
<string>/dev/null</string>
También, como mankoff, dijo, se debe poner esto en ~/Library/LaunchAgents por lo que estará en cargar cada vez que inicie sesión. Ah, y probablemente, usted debe agregar un local.
prefijo del nombre de archivo (como hice con la etiqueta) para adaptarse a las DNS inversa de la convención de nomenclatura.