launchctl是乙個統一的服務管理框架,啟動、停止和管理守護程序、應用程式、程序和指令碼。下面講述一下如何在mac上使用launchctl執行定時任務。一、編寫乙個plist檔案
$ plutil-lint /users/denglibing/library/launchagents/com
.denglibing
.checkin
.plist
這個是乙個完整的 plist 檔案:
<?xml version="1.0" encoding="utf-8"?>
version="1.0">
labelkey>
com.denglibing.checkinstring>
runatloadkey>
programargumentskey>
/users/denglibing/desktop/denglibing_checkin/denglibing_checkin_request.shstring>
array>
startcalendarintervalkey>
weekdaykey>
1integer>
hourkey>
8integer>
minutekey>
58string>
dict>
weekdaykey>
2integer>
hourkey>
8integer>
minutekey>
52string>
dict>
array>
standardoutpathkey>
/users/denglibing/desktop/denglibing_checkin/outlogstring>
standarderrorpathkey>
/users/denglibing/desktop/denglibing_checkin/errorlogstring>
dict>
plist>
二、編寫定時指令碼
即上面plist文件中的denglibing_checkin_request.sh
指令碼,以最簡單的為例 (開啟指令碼):
# denglibing_checkin_request.sh
$ open /users/denglibing/desktop/denglibing_checkin/denglibing_checkin_request.sh
值得注意的是,需要設定這個指令碼為可執行檔案:
$ chmod a+x /users/denglibing/desktop/denglibing_checkin/denglibing_checkin_request.sh
三、plist檔案的位置* ~/library/
launchagents 由使用者自己定義的任務項
* /library/
launchagents 由管理員為使用者定義的任務項
* /library/
launchdaemons 由管理員定義的守護程序任務項
* /system/
library/launchagents 由mac
osx為使用者定義的任務項
* /system/
library/launchdaemons 由mac
osx定義的守護程序任務項
建議放在 ~/library/launchagents 下面。
/system/library和/library和~/library目錄的區別?
/library目錄是系統管理員存放的第三方軟體。
~/library/是使用者自己存放的第三方軟體。
launchdaemons和launchagents的區別?
launchdaemons是使用者未登陸前就啟動的服務(守護程序)。
launchagents是使用者登陸後啟動的服務(守護程序)。
四、載入命令# 載入任務, -w選項會將plist檔案中無效的key覆蓋掉,建議加上
$ launchctl load -w com.denglibing.checkin.plist
# 刪除任務
$ launchctl unload -w com.denglibing.checkin.plist
# 檢視任務列表, 使用 grep '任務部分名字' 過濾
$ launchctl list | grep 'com.denglibing'
五、總結
launchctl在定時啟動任務非常簡單和方便,值得注意的地方就是 plist 檔案了。
1、label:對應的需要保證全域性唯一性;
2、program:要執行的程式;
3、programarguments:命令語句
4、startcalendarinterval:執行的時間,單個時間點使用dict,多個時間點使用 array
5、startinterval:時間間隔,與startcalendarinterval使用其一,單位為秒
6、standardinpath、standardoutpath、standarderrorpath:標準的輸入輸出錯誤檔案,這裡建議不要使用 .log 作為字尾,會打不開裡面的資訊。
7、定時啟動任務時,如果涉及到網路,但是電腦處於睡眠狀態,是執行不了的,這個時候,可以定時的啟動螢幕就好了。
六、相關鏈結
mac上,執行定時任務:launchctl
多個時間點啟動任務
Mac 執行定時任務
在macos下,輸入 sudo crontab e crontab l 檢視定時任務 crontab r 刪除定時任務 有人曾碰到在mac os下無法使用定時任務crontab 解決方法 sudo vim vimrc 新增如下內容並儲存 autocmd filetype crontab setloc...
ORACLE執行定時任務
這pl sql中,進入command介面,執行如下語句即可 var job num number begin dbms job.submit job num,sp test sysdate,sysdate 1 24 60 60 true end 貌似時間間隔最少是5秒。引數說明 job num 返回...
python執行定時任務
一,當你想讓你某個方法在幾秒甚至更長的時間內執行後執行一次,你可以這樣做 import time from threading import timer defprint time enter time print now is time.time enter the box time is ent...