2012-11-05 82 views
1

就像它說的那樣,我有一個啓動腳本,應該在上午1點20分開始啓動,但似乎在用戶登錄後不久就會啓動。任何人都可以看到我做錯了什麼?啓動plist在啓動時啓動,但不應該

是我寫了ProgramArguments,到達應用程序的容器中啓動它的方式?我還沒有成功推出任何其他方式的(applescript)應用程序,即open ~/Library/CDesResources/Shutdown.app似乎沒有工作。

plist保存在~/Library/LaunchAgents/shutdownAgent.plist所以它應該只在該用戶登錄正確時觸發?

非常感謝您的新鮮眼睛和專業知識。

<?xml version="1.0" encoding="UTF-8"?> 
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
    <plist version="1.0"> 
    <dict> 
     <key>Label</key> 
     <string>shutdownAget</string> 
     <key>Nice</key> 
     <integer>-20</integer> 
     <key>ProgramArguments</key> 
     <array> 
      <string>/Library/CDesResources/Shutdown.app/Contents/MacOS/applet</string> 
     </array> 
     <key>RunAtLoad</key> 
     <false/> 
     <key>ServiceDescription</key> 
     <string>launch the shutdown script</string> 
     <key>StartCalendarInterval</key> 
     <dict> 
      <key>Hour</key> 
      <integer>1</integer> 
      <key>Minute</key> 
      <integer>20</integer> 
     </dict> 
    </dict> 
    </plist> 

回答

1

從手冊頁launchd.plist(5)

與cron不同,其跳過任務調用,當計算機處於睡眠狀態,launchd會會在下一次計算機醒來開始工作。如果在計算機被喚醒之前發生多個間隔,則從睡眠中喚醒後,這些事件將合併爲一個事件。

因此launchd在啓動時正確注意到作業未在01:20運行併爲您安排。

+0

謝謝格雷姆 - 我看到什麼似乎是一個遞歸循環。所以在我的情況下,我有一個關閉腳本,它在mac第一次啓動時(在新映像的mac上)啓動,甚至在關閉並重新啓動後,launchd繼續觸發腳本。在launchd寄存器實際運行之前,我的關機腳本是否可能被觸發?我會說我的關機時間長達30秒,然後才發射'shudown -h now'。防止這種行爲的最佳方法是什麼?是否推出了用於這項工作的最佳工具? – orionrush