2012-01-25 58 views
0

我有時間在OS X 10.4.11上使用launchd獲得類似cron的調度FileMaker腳本。 (我在serverfault上描述了我的早期難題。)起初,我認爲問題在於FileMaker腳本打開了一個GUI,這似乎是LaunchDaemon的一個限制。然後,我將它變成了LaunchAgent,它允許使用窗口資源,但仍然無法執行。LaunchAgent打開FileMaker腳本

這有一個沒有任何意義的事情的清單:

  1. 如果使用launchctl命令來啓動你的手加載後的任務,然後一切工作正常。

    sudo launchctl start my.script.name

  2. 如果選擇StartInterval那就是在未來的幾分鐘內(而不是幾個小時以後),然後加載的.plist,一切正常。 (我認爲起初這可能與屏幕保護程序有關 - 當ss執行時,某些東西會被垃圾回收或者其他東西;但是如果它在ss啓動之後被調度,它似乎也可以工作,只要它不是)

  3. 我將Shell中的FileMaker程序的調用封裝在一個shell腳本中,除了執行FileMaker程序之外,它還向日誌文件寫入了一個時間戳。從閱讀這個日誌文件我可以驗證,是的,shell腳本確實是在適當的時候由launchd調用的。或至少差不多,這是因爲:

  4. 日誌顯示一些奇怪的事情:如果我安排在下午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> 
+0

一對夫婦的想法:1:莫非的FileMaker是忙於做其他事情的時候你腳本並因此沒有響應?2:您想要腳本的數據庫是否仍然打開,如果是,它仍然是FileMaker中的活動數據庫?3:您是否嘗試過使用iCal警報進行自動化? FileMaker設置?FM Pro/Advanced?FM服務器?共享文件?單個用戶文件? – pft221

+0

感謝您的迴應#1:否;可能的例外是多次啓動導致它自行中斷,從而導致事情發生。我會考慮這個問題。#2:運行腳本是合適的數據庫活躍。#3:我沒有,但可能會這樣。我想以Apple的祝福的方式來做事,但我正在迅速失去耐心。 #4:FM Pro。至於其餘的,我不確定。你會期望在這些不同情況下的不同行爲,在沒有其他人運行任何基於FM的東西的情況下? – shanusmagnus

+0

#4:如果沒有其他人正在運行FM,那麼一般不會。 – pft221

回答

0

你必須使用的launchd這個?

我使用內置的cron功能(通過CronniX GUI打開本地的FileMaker文件,然後運行我們的FileMaker服務器上的腳本

+0

這是一個很好的觀點。讓我看看。 – shanusmagnus