2011-11-18 11 views
6

En Windows, es posible crear una aplicación que se pueda instalar como un servicio. Este tipo de aplicación se llama Servicio de Windows. ¿Cuál sería el equivalente a los servicios en Mac OS X? ¿Cómo se implementan y dónde comenzar a aprender al respecto?¿Cómo crear un servicio de Windows para Mac OS X?

Me gustaría crear un servicio para ejecutar una tarea de forma automática, iniciarla y detenerla bajo demanda.

+0

Mac en un momento ejecutaba un kernel bsd modificado. ¿Tienen una herramienta tipo cron que podrías usar? http: // benr75.com/pages/using_crontab_mac_os_x_unix_linux – Chris

+2

Puede utilizar 'cron' pero su uso está en desuso en favor de' launchd'. –

+0

bien, he leído launchd y parece ser la solución correcta. thx – willyMon

Respuesta

9

que necesita para ser amigos con launchd. Es necesario crear launchd archivos de configuración que se colocan en uno de los cinco lugares:

  • ~/Library/LaunchAgents: agentes por usuario proporcionados por el usuario.

  • /Library/LaunchAgents: Agentes por usuario proporcionados por el administrador.

  • /Library/LaunchDaemons: Daemons en todo el sistema proporcionados por el administrador . agentes por usuario proporcionados por Mac OS X.

  • /System/Library/LaunchDaemons::

  • /System/Library/LaunchAgents demonios de todo el sistema proporcionado por Mac OS X.

Un demonio es un servicio en todo el sistema del cual hay una instancia para todos los clientes. Un agente es un servicio que se ejecuta por usuario.

Configuration files están en la forma de un property list.

La sintaxis es simple pero es fácil hacerlo mal. El Wikipedia article tiene un buen resumen de las opciones si el man page no es de su agrado.

Básicamente, lo que hace es instalar su herramienta de línea de comandos real (su servicio) en algún lugar y luego crear una lista de configuración launchd y colocarla en una de las ubicaciones anteriores. Puede configurar el plist para que launchd ejecute su servicio en el inicio o periódicamente, o en respuesta a varias acciones (como el contenido de una carpeta que cambia).

Hay un buen artículo en profundidad here.

+0

Los elementos en/Biblioteca (a diferencia de ~/Biblioteca de un solo usuario) se ejecutarán para cada usuario que inicie sesión, ¿correcto? –

+0

Sí, eso es correcto. –

+0

¿Hay alguna manera de hacer que esta aplicación se ejecute como root en el inicio usando launchd? –

4

Deberías echarle un vistazo a launchd, puedes hacer muchas cosas ingeniosas con él. Por ejemplo, steam le dijo a launchd que cada vez que se elimine el vapor, ejecute steam_delete helper tool. Esta herramienta de ayuda lo ayuda a desinstalar completamente el vapor de su sistema.

Otros incluyen el mecanismo de actualización automática de Google Chrome en OS X.

Un enlace para ayudar a empezar: Devdaily launchd examples

+0

gracias por la respuesta. – willyMon