Tengo un launchd script donde el comando estoy tratando de ejecutar es erroring (al parecer eso no es una palabra, es ahora), quejándose de un uso inadecuado.
El error específico que voy es que el comando de uso del texto objeto de dumping en el registro del sistema. De esto deduzco que el resto de la información (ruta de acceso para el comando, el momento, etc.) en el plist se analiza correctamente, no sólo de las opciones del comando.
Después de que el uso del comando tengo una última línea:
18/11/2013 09:30:00.101 com.apple.launchd.peruser.501: (fake.lable.seti[33833]) Exited with code: 1
Pero eso solo significa que "me sale con un error".
Sé launchd divide el comando de sus opciones, y en la página man le dice a usted acerca de ProgramArguments: "...por Favor nota: muchas personas están confundidas por esta clave. Por favor, lea execvp(3) muy cuidadosamente!.."
También he leído execvp(3) y estoy ninguno de los sabios, por lo que estoy pidiendo a usted encantadora mucho.
Normalmente, se ejecuta el comando desde la terminal que iba a tener este aspecto:
/Library/Application\ Support/BOINC\ Data/boinccmd --host localhost --passwd gobbledygook --project http://setiathome.berkeley.edu/ update
Esto funciona de maravilla.
Y así es como yo la hemos dividido en el Programa/ProgramArguments sección de mi LaunchAgent plist:
<key>Program</key>
<string>/Library/Application Support/BOINC Data/boinccmd</string>
<key>ProgramArguments</key>
<array>
<string>--host localhost</string>
<string>--passwd gobbledygook</string>
<string>--project http://setiathome.berkeley.edu/ update</string>
</array>
(para el registro, yo tenía originalmente la ruta de acceso a boinccmd \escapó, pero que no funciona, launchd escapa de espacios en la ruta de acceso para usted)
He intentado dividir los argumentos más abajo:
<key>Program</key>
<string>/Library/Application Support/BOINC Data/boinccmd</string>
<key>ProgramArguments</key>
<array>
<string>--host</string>
<string>localhost</string>
<string>--passwd</string>
<string>gobbledygook</string>
<string>--project</string>
<string>http://setiathome.berkeley.edu/</string>
<string>update</string>
</array>
Pero eso no parece funcionar bien.
Como siempre, estoy muy seguro de que me estoy perdiendo algo tan simple.
Gracias.
RESPUESTA:
La primera línea de ProgramArguments debe ser la ruta de acceso al programa. Esto es lo que estaba disparo de mí y de hecho lo fue, probablemente, al decir "...por Favor, lea muy cuidadosamente!.." comentario :) También encontré tuve que dividir los argumentos de sus partes componentes. Cuando yo tenía todo eso en lugar de la totalidad de la cosa funciona de maravilla. Muchas gracias.
<key>Program</key>
<string>/Library/Application Support/BOINC Data/boinccmd</string>
<key>ProgramArguments</key>
<array>
<string>/Library/Application Support/BOINC Data/boinccmd</string>
<string>--host</string>
<string>localhost</string>
<string>--passwd</string>
<string>gobbledygook</string>
<string>--project</string>
<string>http://setiathome.berkeley.edu/</string>
<string>update</string>
</array>
Una edición final decir para un fácil comprender la explicación de por QUÉ esto debería ser, consulte SirPavlova explicación.
~W