我有時間在OS X 10.4.11上使用launchd獲得類似cron的調度FileMaker腳本。 (我在serverfault上描述了我的早期難題。)起初,我認爲問題在於FileMaker腳本打開了一個GUI,這似乎是LaunchDaemon的一個限制。然後,我將它變成了LaunchAgent,它允許使用窗口資源,但仍然無法執行。LaunchAgent打開FileMaker腳本
這有一個沒有任何意義的事情的清單:
如果使用launchctl命令來啓動你的手加載後的任務,然後一切工作正常。
sudo launchctl start my.script.name
如果選擇StartInterval那就是在未來的幾分鐘內(而不是幾個小時以後),然後加載的.plist,一切正常。 (我認爲起初這可能與屏幕保護程序有關 - 當ss執行時,某些東西會被垃圾回收或者其他東西;但是如果它在ss啓動之後被調度,它似乎也可以工作,只要它不是)
我將Shell中的FileMaker程序的調用封裝在一個shell腳本中,除了執行FileMaker程序之外,它還向日誌文件寫入了一個時間戳。從閱讀這個日誌文件我可以驗證,是的,shell腳本確實是在適當的時候由launchd調用的。或至少差不多,這是因爲:
日誌顯示一些奇怪的事情:如果我安排在下午8時08分要啓動的腳本,我得到兩次執行,幾秒鐘彼此分開:
[星期二1月24日20:07:57 CST 2012]執行腳本!
[Tue Jan 24 20:08:00 CST 2012]執行腳本!
我在繩子的一端是那種在這裏 - 我讀過的有關手冊頁,蘋果的技術文檔,在StackExchange網站的其他文章。盡我所能,我真的完成了功課。任何能夠幫助我的人都會有一些以他們的方式出現的嚴重業力。
對於它的地獄,再次,這裏是.plist與一些cruft(XML定義,日誌信息)編輯出來。 (請記住,這個工程手動加載的時候,所以我知道的plist本身是好的。)
<plist version="1.0">
<dict>
<key>Label</key>
<string>shane.useragent.launcher</string>
<key>ProgramArguments</key>
<array>
<string>/Users/shane/launchFM.sh</string>
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>20</integer>
<key>Minute</key>
<integer>8</integer>
</dict>
</dict>
</plist>
一對夫婦的想法:1:莫非的FileMaker是忙於做其他事情的時候你腳本並因此沒有響應?2:您想要腳本的數據庫是否仍然打開,如果是,它仍然是FileMaker中的活動數據庫?3:您是否嘗試過使用iCal警報進行自動化? FileMaker設置?FM Pro/Advanced?FM服務器?共享文件?單個用戶文件? – pft221
感謝您的迴應#1:否;可能的例外是多次啓動導致它自行中斷,從而導致事情發生。我會考慮這個問題。#2:運行腳本是合適的數據庫活躍。#3:我沒有,但可能會這樣。我想以Apple的祝福的方式來做事,但我正在迅速失去耐心。 #4:FM Pro。至於其餘的,我不確定。你會期望在這些不同情況下的不同行爲,在沒有其他人運行任何基於FM的東西的情況下? – shanusmagnus
#4:如果沒有其他人正在運行FM,那麼一般不會。 – pft221