2015-04-21 57 views

回答

2

您可以使用crontab來製作它。

crontab是您希望在常規日程表 上運行的命令的列表,以及用於管理該列表的命令的名稱。

crontab代表「cron table」,因爲它使用作業調度程序 cron來執行任務; cron本身是以「chronos」的名字命名的,希臘文 這個詞的時間。

說你有一個腳本/bin/openURL.sh打開一個網站,

30 21* * * /bin/OpenURL.sh 

意味着執行它21:30每一天。

更多使用約crontab,看到http://www.computerhope.com/unix/ucrontab.htm

2

對於一次性工作(計劃任務),at命令簡單安排,通過John1024的自刪除的答案證明,但at has OSX上的缺點

  • 必須先啓用;這是一次性操作:sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.atrun.plist
  • 您必須使用sudo(具有管理權限)才能使用at安排作業。
  • 如果一個作業產生任何輸出,它將郵寄給給用戶使用mail作爲stdout和stderr輸出(我不知道如何抑制這個)。
  • 實施例:時間表開口http://stackoverflow.com一次,在19:00(7 PM):
    • sudo bash -c 'echo "open http://stackoverflow.com" | at 19:00'

使用crontab週期性作業一個選項o OSX;例如,以安排在每天19:00(7點)打開http://stackoverflow.com工作:

  • 運行crontab -e在編輯器中打開當前用戶的cronfile。
  • 添加以下行,保存並關閉文件:
    • 0 19 * * * open http://stackoverflow.com
  • 如果作業產生任何輸出,這將是使用mail郵寄給用戶,如結合stdout和標準輸出(我不知道如何壓制這個)。

然而,在OSX的官方建議是使用launchd兩個一次性和週期性工作

  • launchd非常靈活集中了所有的作業調度;與crontab一樣,系統範圍和每個用戶都有作業。
  • 缺點是確定工作所需的.plist文件繁瑣和不平凡的創建

使用我們前面的例子:

一次性作業:(打開http://stackoverflow.com一次,在19:00(下午7點))

  • 創建文件~/test.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>TestJob</string> 
    <key>ProgramArguments</key> 
    <array> 
    <string>open</string> 
    <string>http://stackoverflow.com</string> 
    </array> 
    <key>LaunchOnlyOnce</key> 
    <true/> 
    <key>StartCalendarInterval</key> 
    <dict> 
    <key>Hour</key> 
    <integer>19</integer> 
    <key>Minute</key> 
    <integer>00</integer> 
    </dict> 
</dict> 
</plist> 
  • TestJob唯一標識你的工作。
  • 設置LaunchOnlyOncetrue確保作業只運行一次。
  • 從終端,運行launchctl load ~/test.plist加載作業。

定期工作:(每天開放http://stackoverflow.com19:00(7點))

  • 創建文件~/Library/LaunchAgents/testPeriodic.plist
    • 注:位置事項:~/Library/LaunchAgents是哪裏每個用戶的作業定義*.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>TestJobPeriodic</string> 
    <key>ProgramArguments</key> 
    <array> 
    <string>open</string> 
    <string>http://stackoverflow.com</string> 
    </array> 
    <key>StartCalendarInterval</key> 
    <dict> 
    <key>Hour</key> 
    <integer>19</integer> 
    <key>Minute</key> 
    <integer>00</integer> 
    </dict> 
</dict> 
</plist> 
  • 再次,TestJobPeriodic唯一標識你的工作。
  • 作業默認運行默認(即,缺席LaunchOnlyOnce使作業定期)。
  • 從終端,運行launchctl load ~/Library/LaunchAgents/testPeriodic.plist加載作業。

有關背景信息,請參閱https://stackoverflow.com/a/23880156/45375

相關問題