2011-11-18 18 views
6

In Windows è possibile creare un'applicazione che può essere installata come servizio. Questo tipo di applicazione è chiamato servizio di Windows. Quale sarebbe l'equivalente dei servizi su Mac OS X? Come vengono implementati e da dove iniziare a conoscerlo?Come creare un servizio Windows per Mac OS X?

Vorrei creare un servizio per eseguire automaticamente un'attività e avviarla e interromperla su richiesta.

+0

Mac a un certo punto stava eseguendo un kernel bsd modificato. Hanno uno strumento simile a cron che potresti usare? http: // benr75.it/pages/using_crontab_mac_os_x_unix_linux – Chris

+2

Si può effettivamente usare 'cron', ma il suo uso è deprecato a favore di' launchd'. –

+0

ok, ho letto launchd e sembra essere la soluzione giusta. thx – willyMon

risposta

9

è necessario diventare amici con launchd. È necessario creare launchd i file di configurazione che vengono inseriti in una delle cinque sedi:

  • ~/Library/LaunchAgents: agenti per utente fornite dall'utente.

  • /Library/LaunchAgents: agenti per utente forniti dall'amministratore.

  • /Library/LaunchDaemons: Demoni a livello di sistema forniti dall'amministratore . agenti per utente fornite da Mac OS X.

  • /System/Library/LaunchDaemons

  • ::

  • /System/Library/LaunchAgents demoni a livello di sistema forniti da Mac OS X.

Un demone è un servizio a livello di sistema di cui esiste un'istanza per tutti i client. Un agente è un servizio che viene eseguito per utente.

Configuration files sono sotto forma di un property list.

La sintassi è semplice, ma è facile sbagliare. Lo Wikipedia article ha un buon riepilogo delle opzioni se lo man page non è di vostro gradimento.

In sostanza, ciò che si fa è installare il proprio strumento da riga di comando (il proprio servizio) da qualche parte, quindi creare un plist di configurazione launchd e posizionarlo in uno dei percorsi sopraindicati. È possibile configurare il plist in modo che launchd esegua il servizio all'avvio o periodicamente o in risposta a varie azioni (ad esempio il contenuto di una cartella che cambia).

C'è un buon articolo approfondito here.

+0

Gli elementi in/Library (in contrapposizione a ~/Library di un singolo utente) verranno eseguiti per ogni utente che accede, corretto? –

+0

Sì, è vero. –

+0

C'è un modo per far funzionare questa app come root all'avvio usando launchd? –

4

Si dovrebbe dare un'occhiata a launchd, si può fare un sacco di cose belle con esso. Ad esempio, steam ha detto launchd che ogni volta che viene eliminato il vapore, eseguire steam_delete helper tool. Questo strumento di supporto ti aiuta a disinstallare completamente il vapore dal tuo sistema.

Altri includono il meccanismo di aggiornamento automatico di Google Chrome su OS X.

Un link per aiutarti a iniziare: Devdaily launchd examples

+0

grazie per la risposta. – willyMon