2010-11-02 21 views
5

En OSX, usar launchctl para iniciar y detener un servicio parece excelente, pero no veo de todos modos que verifique el valor de retorno para asegurarse de que realmente comenzó. Valor de retorno siempre parece volver como cero, incluso cuando el servicio no se pudo iniciarOSX: Cómo comprobar el valor de retorno del comando launchctl

Este archivo plist contiene un error y por lo tanto no se iniciará la llovizna como se esperaba

% launchctl start /Library/LaunchDaemons/org.drizzlebad.plist 

% echo $? 

0 

Cualquier sugerencia que no sean la comprobación de la existencia de la archivo pid para este servicio?

Respuesta

8

Usted debe estar haciendo algo mal, porque launchctl sólo se devuelve 0 en caso de éxito:

$ launchctl start foobar 
launchctl start error: No such process 
$ echo $? 
1 

Además, launchctl start lleva el título del trabajo (por lo general un nombre de estilo DNS inversa), no el camino a un plist . Es launchctl load y unload que toman una ruta plist.

Si insiste en que no funciona para usted, puede tratar de limitar la salida de launchctl list para el nombre de su trabajo y, si es necesario, analizar los campos.

+0

¿Qué ocurre si vuelve todo listo? ¿Es diferente entonces 0 valor de retorno? –

1

Cuando hace un launchctl list desde el terminal, verá que en la segunda columna ... hay una lista de la mayoría de los 0 y -'s ... si su programa salió incorrectamente, se mostrará la salida código en esa segunda columna ... usualmente un -1 o a veces un -251, o cualquiera que sea el caso ... y recuerde ... solo porque su elemento de lanzamiento podría haberse bloqueado ... launchctl aún puede estar febrilmente intentándolo para "hacer que funcione" - cada 10 segundos ... así que no permitas que un proceso de lanzamiento borked permanezca para siempre, ya que definitivamente afecta el rendimiento ...

Descárgalo con un -w .... y el ruta completa al plist, o al menos detener (y opcionalmente eliminarlo) con el identificador del paquete. -w hará una entrada clandestina en un plist en su carpeta/var/db/launchd, diciéndole al kernel que no la cargue la próxima vez que arranque la máquina ... independientemente de lo que la entrada XML "habilitada" pueda decir en la Lista. .. así que ten en cuenta que hay algo más que solo esa bandera en juego en cuanto a si el elemento resucita la próxima vez que inicies ...

si quieres puedes hacer una copia de seguridad del archivo overrides.plist en la carpeta tat var y comenzar de nuevo si se ha vuelto demasiado intrincado con cargas y descargas con el tiempo ... hay otras formas de hacerlo, pero voy a callarme ahora ... antes de que, por cierto, le indique cómo manguera completamente su computadora ...

Cuestiones relacionadas