在linux下執行定期任務可以使用crontab,目前mac os也可以使用它,不過已不推薦使用。推薦做法是採用plist指令碼,plist指令碼可以設定執行的動作,時間間隔等其他一些資訊。另外crontab的最小時間間隔是一分鐘,使用plist指令碼原則上時間間隔可以為一秒。
plist指令碼存放路徑為/library/launchdaemons或/library/launchagents,其區別是後乙個路徑的指令碼當使用者登陸系統後才會被執行,前乙個只要系統啟動了,哪怕使用者不登陸系統也會被執行。可以通過兩種方式來設定指令碼的執行時間。乙個是使用startinterval,它指定指令碼每間隔多長時間(單位:秒)執行一次;另外乙個使用startcalendarinterval,它可以指定指令碼在多少分鐘、小時、天、星期幾、月時間上執行,類似如crontab的中的設定。
乙個簡單例子如下:
1<?
xml version="1.0" encoding="utf-8"
?>
2>
3<
plist
version
="1.0"
>
4<
dict
>
5<
key>label
key>
6<
string
>com.yangyz.cron.test.plist
string
>
7<
key>programarguments
key>
8<
array
>
9<
string
>/users/yangyz/plist-test.sh
string
>
10array
>
11<
key>keepalive
key>
12<
false
/>
13<
key>runatload
key>
14<
true
/>
15<
key>startinterval
key>
16<
integer
>60
integer
>
17dict
>
18plist
>
其中key是plist指令碼定義的屬性,緊跟著的下一行是該屬性對應的值。上述指令碼是每間隔60秒執行一次/users/yangyz/plist-test.sh這個shell指令碼,也可以使用startcalendarinterval來替換startinterval達到同樣的效果,例如:
<key>startcalendarinterval
key>
<
dict
>
<
key>minute
key>
<
integer
>0
integer
>
dict
>
上述設定的意思為每天的每個小時的第0分鐘執行,也即使每60秒執行一次。
#停止指令碼com.yangyz.cron.test.plist執行launchctl unload /library/launchdaemons/com.yangyz.cron.test.plist
#啟動指令碼com.yangyz.cron.test.plist執行
launchctl load /library/launchdaemons/com.yangyz.cron.test.plist
如果執行上面命令看到launchctl: dubious ownership on file (skipping): /library/launchdaemons/com.yangyz.cron.test.plist這樣的錯誤,其原因是該指令碼的owner和當前執行操作使用者不一致。使用chown修改一下即可。
參考資料:
Mac 開機自啟動配置設定方法(定時任務解決方案)
在linux下執行定期任務可以使用crontab,目前mac os也可以使用它,不過已不推薦使用。推薦做法是採用plist指令碼,plist指令碼可以設定執行的動作,時間間隔等其他一些資訊。另外crontab的最小時間間隔是一分鐘,使用plist指令碼原則上時間間隔可以為一秒。plist指令碼存放路...
mac 設定mysql開機自啟動
mac 設定mysql開機自啟動 1 編輯乙個mysql啟動檔案。在終端裡面輸入 sudo vi library launchdaemons com.mysql.mysql.plist 2 輸入啟動檔案內容 複製 keepalive label com.mysql.mysqld programarg...
設定OVS開機自啟動的方法
以openvswitch 1.9.0為例,安裝完成後做如下操作 1.安裝完ovs後將兩個.ko檔案拷貝到 etc sysconfig modules下,使用cp命令即可,如下 cd openvswitch 1.9.0 cp rf datapath linux openvswitch.ko etc s...