2011-11-18 21 views
6

在Windows中,可以創建可作爲服務安裝的應用程序。這種類型的應用程序稱爲Windows服務。 Mac OS X上的服務相當於什麼?它們是如何實現的以及從哪裏開始瞭解它?如何爲Mac OS X創建Windows服務?

我想創建一個服務來自動執行任務,並根據需要啓動和停止它。

+0

Mac在某一時刻正在運行一個修改過的bsd內核。他們是否有類似cron的工具? http:// benr75。com/pages/using_crontab_mac_os_x_unix_linux – Chris

+2

確實可以使用'cron',但它的使用已被棄用,以'launchd'爲優先。 –

+0

好吧,我已閱讀launchd,似乎是正確的解決方案。 thx – willyMon

回答

9

您需要成爲朋友launchd。你需要創建一個被放置在五個位置中的一個launchd配置文件:

  • ~/Library/LaunchAgents:由用戶提供的每用戶代理。

  • /Library/LaunchAgents:管理員提供的每用戶代理。

  • /Library/LaunchDaemons:系統範圍的守護進程由 管理員提供。

  • /System/Library/LaunchAgents:由Mac OS X上提供每個用戶代理

  • /System/Library/LaunchDaemons:由Mac OS X.提供全系統守護程序

守護程序是一個系統範圍的服務,其中有一個實例爲所有客戶端。 代理是基於每個用戶運行的服務。

Configuration files是的property list.

的語法很簡單的形式,但它很容易搞錯。如果man page不符合您的喜好,Wikipedia article對選項有很好的總結。

本質上,你要做的是在某個地方安裝實際的命令行工具(你的服務),然後創建一個launchd配置plist並將其放置在上述位置之一。您可以配置plist,以便launchd在啓動時或定期運行您的服務,或者響應各種操作(例如文件夾內容的更改)。

有一篇很好的深入文章here

+0

/Library中的項目(與單個用戶的〜/ Library相對)將針對每個登錄的用戶運行,是否正確? –

+0

是的,沒錯。 –

+0

有沒有辦法讓這個應用程序在啓動時使用launchd以root身份運行? –

4

你應該看看啓動,你可以做很多漂亮的東西。例如,蒸汽告訴launchd,每當蒸汽被刪除時,運行steam_delete幫助工具。這個幫助工具可以幫助您徹底卸載系統中的蒸汽。

其他的還包括谷歌瀏覽器在OS X的自動更新機制

的鏈接,以幫助您開始:Devdaily launchd examples

+0

感謝您的回答。 – willyMon