1. 程式人生 > 實用技巧 >MacOS launchctl 啟動程序控制

MacOS launchctl 啟動程序控制

MacOS不像 Linux 有 /etc/init.d/rc.local 以及 service 的方式可以設定程式隨機啟動,而是使用 plist 檔案管理。你可以寫一個plist檔案放到~/Library/Launch Agents/下面,檔案裡描述你的程式路徑和啟動引數,那麼這個使用者登入時就會啟動這個程式了,而且是殺不了的哦,被殺了之後會自動重新啟動

plist檔案分佈在:

/System/Library/LaunchDaemons/ (System-wide daemons provided by OS X)
其中 apache的httpd程式啟動配置檔案 org.apache.httpd.plist 就在這裡。
/System/Library/LaunchAgents/ (由Mac OS X為使用者定義的任務項)
/Library/LaunchDaemons (由管理員定義的守護程序任務項 )
/Library/LaunchAgents (由管理員為使用者定義的任務項 )
如果放到/Library/Launch Agents/下面的話,就是一開機就啟動哦~
~/Library/LaunchAgents ( 由使用者自己定義的任務項 )
這些配置檔案由程式 launchctl 設定是否載入。

launchctl 簡介

launchctl 管理 MacOS 的啟動指令碼,控制啟動計算機時需要開啟的服務。也可以設定定時執行特定任務的指令碼,就像Linux cron一樣。
launchctl需要root許可權。

launchctl 常用命令

1.顯示當前的啟動指令碼
launchctl list

2.開機時自動啟動Apache伺服器
sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist

3.設定開機啟動並立即啟動改服務
launchctl load -w **.pist

  1. 設定開機啟動但不立即啟動服務
    launchctl load **.pist

  2. 停止正在執行的啟動指令碼
    sudo launchctl unload [path/to/script]

  3. 再加上-w選項即可去除開機啟動
    sudo launchctl unload -w [path/to/script]
    執行定時指令碼|設定開機啟動步驟
    1.寫執行指令碼 (通過 brew 安裝軟體 brew 會為我們自動生成。)

  4. 去對應的目錄下建立plist檔案

  5. 載入服務

    1 cd 進入指定 plist 檔案目錄
    2 launchctl load *.plist #載入
    launchctl unload *.plist #取消
    3 launchctl list #檢視服務

對服務設定別名方便操作

  1. vim ~/.bash_profile #編輯新增如下指令碼
  2. 命名別名(以 nginx 為例)

    啟動:alias nginx.start=’launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist’
    關閉:alias nginx.stop=’launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist’
    重啟:alias nginx.restart=’nginx.stop && nginx.start’

注意點

  1. 在launchctl list 命令結果中出現的 plist 檔案才會有效。
  2. Agents資料夾下的plist是需要使用者登入後,才會載入的,而Daemons資料夾下得plist是隻要開機,可以不用登入就會被載入

來源:
MacOS launchctl 啟動程序控制