Launchctl 控制OS X系統裏的啓動進程(launch) php
在Mac裏有一個命令行工具叫作:launchctl,能夠用來控制服務的自動啓動或者關閉。通常的語法是
sudo launchctl load /path/to/service.plistsudo launchctl unload /path/to/service.plist
通常plist文件放在這j幾個地方:mysql
/Library/LaunchDaemons/ 由管理員定義的守護進程任務項
/Library/LaunchAgents/ 由管理員爲用戶定義的任務項
~/Library/LaunchAgents/ 由用戶本身定義的任務項 nginx
/System/Library/LaunchAgents 由Mac OS X爲用戶定義的任務項redis
你能夠寫一個plist文件放到~/Library/Launch Agents/下面,文件裏描述你的程序路徑和啓動參數,那麼這個用戶登陸時就會啓動這個程序了,並且是殺不了的哦
被殺了以後會自動從新啓動
若是須要把它中止的話,運行一下命令
launchctl unload ~/Library/Launch Agents/com.your company.porduct
若是放到/Library/Launch Agents/下面的話,就是一開機就啓動哦~sql
Launchctl :控制OS X系統裏的啓動進程(launch) 編程
執行定時腳本|設置開機啓動步驟
(1)編寫執行腳本
一般brew在安裝軟件時brew爲咱們自動生成。
(2)去對應的目錄下創建plist文件
(3)加載服務vim
說明:Agents文件夾下的plist是須要用戶登陸後,纔會加載的,而Daemons文件夾下得plist是隻要開機,能夠不用登陸就會被加載bash
加載/卸載服務
cd 進入指定 plist 文件 目錄
launchctl load *.plist #加載
launchctl unload *.plist #取消
launchctl list #查看服務數據結構
launchctl load -w **.pist #設置開機啓動並當即啓動改服務
launchctl load **.pist #設置開機啓動但不當即啓動服務
2.4 對服務設置別名方便操做
vim ~/.bash_profile #編輯添加以下腳本
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’
alias php-fpm.start=」launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.php55.plist」
alias php-fpm.stop=」launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.php55.plist」
alias php-fpm.restart=’php-fpm.stop && php-fpm.start’
alias mysql.start=」launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist」
alias mysql.stop=」launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist」
alias mysql.restart=’mysql.stop && mysql.start’
alias redis.start=」launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.redis.plist」
alias redis.stop=」launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.redis.plist」
alias redis.restart=’redis.stop && redis.start’
alias memcached.start=」launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.memcached.plist」
alias memcached.stop=」launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.memcached.plist」
alias memcached.restart=’memcached.stop && memcached.start’memcached
Plist的全稱是Property lists,是一種用來存儲串行化後的對象的文件。屬性列表文件的文件擴展名爲.plist,所以一般被稱爲plist文件。Plist文件一般用於儲存用戶設置,也能夠用於存儲捆綁的信息。
Plist組織數據到命名值和列表值,主要經過幾個主要的Core Foundation類型:CFString, CFNumber, CFBoolean, CFDate, CFData, CFArray, 和 CFDictionary。
Plist結構和內容
Property lists從基本的Core Foundation 類型:CFString,CFNumber,CFBoolean,CFDate,CFData構造。要創建一個複雜的數據結構從這些基本類型,你得把它們放在裏面CFDictionary或CFArray裏面。爲了簡化對Property lists的編程,任何屬性列表類型也能夠被引用經過使用類型CFPropertyListRef。
在一個CFDictionary,數據結構是以鍵-值對的形式,其中每一個鍵是一個字符串,該鍵的值能夠是一個CFString字符串,一個CFNumber,一個CFBoolean,一個CFDate,一個CFData,一個CFArray,或其餘CFDictionary。當使用CFDictionary做爲屬性列表時,全部的鍵必須是字符串。
在一個CFArray,數據結構是以一個能夠經過索引訪問的對象的有序集合。在屬性列表中,一個CFArray能夠包含任何的基本屬性列表類型,以及CFDictionary和其餘CFArray的對象。
PROPERTY LIST XML 標籤
當屬性列表將Core Foundation對象集合轉換成一個XML的屬性列表,使用文件類型標籤<plist>來包含全部的屬性列表。下表中列出Core Foundation數據類型經常使用的其餘標記:
Core Foundation數據類型等同的XML
Core Foundation類型 |
XML標籤 |
CFString |
<string> |
CFNumber |
<real> 或者 <integer> |
CFBoolean |
<true /> 或者<false /> |
CFDate |
<date> |
CFData |
<data> |
CFArray |
<array> |
CFDictionary |
<dict> |