2010-09-06 67 views
2

你好夥計電腦的人:)在哪裏放置一個shell腳本?

我有一個shell腳本,我將用作看門狗定時器。它會檢查我的其他「主」程序是否正在運行。如果不是,則重新啓動它。

問題是:我如何在Mac上安裝它?是否有一個文件夾/ p​​list文件的場景操作系統將自動定期調用腳本,確保我的程序永遠不會運行那麼久,沒有運行?我希望每分鐘測試一次,但每天每小時甚至幾次都會令人滿意。

謝謝!

回答

4

在Mac OS X上執行此操作的方法是使用啓動服務。它取代了舊系統服務,如initcrontab,並提供了一個統一的管理系統服務的框架。

就你而言,你可能不需要單獨的腳本 - 保持運行的應用程序實例應由系統處理。首先,您需要創建描述您的守護程序/腳本/應用程序的.plist文件。根據服務類型,將其放置在以下位置之一:

  • ~/Library/LaunchAgents:用戶提供的每用戶代理。
  • /Library/LaunchAgents:管理員提供的每用戶代理。
  • /Library/LaunchDaemons:管理員提供的全系統守護進程。
  • /System/Library/LaunchAgents:Mac OS X每用戶代理。
  • /System/Library/LaunchDaemons:Mac OS X全系統守護進程。

一旦您定義了服務,您可以使用launchctl命令來控制launchd。例如,您可以列出正在運行的服務,啓動/停止服務等。

完整的文檔是在這裏:

1

Crontab應該很好地做到這一點。將腳本設置爲每X分鐘運行一次,而cron將完成剩下的操作。如果您更喜歡程序的GUI界面,請嘗試cronnix

+0

crontab的不是Mac OS X的 「辦法」。見gavinb的答案爲官方的答案。 – JeremyP 2010-09-06 15:05:13

+0

@JeremyP我接受你的評論,但希望澄清,如果你願意。通過不是Max OSX的「方式」,您的意思是Launch Services包含Cron,並且在使用Cron安排任務方面具有明確的優勢(超過用戶友好程度,即系統優勢)?還是你的意思是鼓勵使用Cron的啓動服務? – Stephen 2010-09-06 15:11:33

+0

啓動服務可以完成cron可以完成的所有任務以及更多功能。其目的是爲所有需要在沒有用戶干預的情況下啓動的統一框架。它取代了inittab,rc.d,inetd,cron,at和標準的Unix守護進程,也可能是一些其他的東西,用於啓動多年來積累的後臺任務。配置比cron更容易,但蘋果聲稱它的效果更好。 – JeremyP 2010-09-06 15:27:35