Mac創(chuàng)建定時任務

創(chuàng)建定時任務主要就是為了每天固定運行一下腳本之類的。比如cocoapods倉庫每天總是有新的第三方庫提交,那么pod update的時候就會更新master分支,所以我就需要每天定時更新master,省得到時候再去pull master。

launchctl 定時任務

一般最常用的就是launchctl這種定時方式了。它是通過plist配置的方式來實現定時任務的。

plist文件格式

上圖就是一個簡單的定時任務的plist文件。下面來簡單說一下里面Key的意思。

  • Label(String)
    任務名稱,建議和文件名一樣

  • Program(String)
    要定時執(zhí)行的腳本,絕對路徑

  • ProgramArguments (Array)
    要定時執(zhí)行的腳本和一些參數,絕對路徑。如果上面的Program省略的話執(zhí)行的就是ProgramArguments里的第一個元素。

  • StandardErrorPath(String)
    腳本執(zhí)行錯誤時的輸出日志,絕對路徑

  • StandardOutPath(String)
    腳本輸出的內容,絕對路徑

  • StartCalendarInterval(Dictionary)
    腳本運行的時間。Minute, Hour, Day, Month, Weekday。

  • StartInterval(Number)
    間隔運行的時間,單位為秒。

  • Disabled(Boolean)
    是否不可用,默認為NO可用。

  • LimitLoadToSessionType(String)
    限制訪問的類型。AQUA:一個GUI劑,即限制訪問所有GUI服務。這個Key好像沒什么用,可用不填。

  • RunAtLoad(Boolean)
    標識launchd在加載完該項服務之后立即啟動路徑指定的可執(zhí)行文件。默認值為false。

  • KeepAlive(Boolean)
    這個key值是用來控制可執(zhí)行文件是持續(xù)運行呢,還是滿足具體條件之后再啟動。默認值為false,也就是說滿足具體條件之后才啟動。當設置值為ture時,表明無條件的開啟可執(zhí)行文件,并使之保持在整個系統(tǒng)運行周期內。

plist文件放置處

  • ~/Library/LaunchAgents 由用戶自己定義的任務項(推薦)
  • /Library/LaunchAgents 由管理員為用戶定義的任務項
  • /Library/LaunchDaemons 由管理員定義的守護進程任務項
  • /System/Library/LaunchAgents 由Mac OS X為用戶定義的任務項
  • /System/Library/LaunchDaemons 由Mac OS X定義的守護進程任務項

建議放在 ~/Library/LaunchAgents 下面。

下面再來理解幾個基礎概念:

/System/Library和/Library和~/Library目錄的區(qū)別?

/System/Library目錄是存放Apple自己開發(fā)的軟件。
/Library目錄是系統(tǒng)管理員存放的第三方軟件。
~/Library/是用戶自己存放的第三方軟件。

LaunchDaemons和LaunchAgents的區(qū)別?

LaunchDaemons是用戶未登陸前就啟動的服務(守護進程)。
LaunchAgents是用戶登陸后啟動的服務(守護進程)。

launchctl 命令

添加: launchctl load /System/Library/LaunchAgents/com.test.plist
移除: launchctl unload /System/Library/LaunchAgents/com.test.plist
查看: launchctl list
立即執(zhí)行任務:launchctl start com.aigo.launchctl.plist
停止執(zhí)行任務:launchctl stop com.aigo.launchctl.plist

注意:

  1. 你所運行的腳本需要有權限才能執(zhí)行:chmod a+x test.sh
  2. 要讓任務生效,必須先load命令加載這個plist
  3. 如果任務被修改了,那么必須先unload,然后重新load
  4. start可以測試任務,這個是立即執(zhí)行,不管時間到了沒有
  5. 執(zhí)行start和unload前,任務必須先load過,否則報錯
  6. ProgramArguments內不能直接寫命令,只能通過shell腳本來執(zhí)行

launchctl的GUI工具

LaunchControl,用這個工具可以查看到所有的launchctl定時任務。并用GUI的方式進行修改執(zhí)行等。

參考

OSX系統(tǒng)添加定時任務
Mac OSX的開機啟動配置
Mac上,執(zhí)行定時任務:launchctl

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容