Mac OSX的開機啟動配置


Login Items

Mac OSX的當前用戶成功登錄后啟動的程序,該類別的啟動項配置文件存放在~/Library/Preferences/com.apple.loginitems.plist,所以只針當前用戶,你可以通過以下方式進行設置:

1.在系統偏好設置的“用戶與群組”下面進行設置,可以刪除、添加、開啟和關閉;

2.你可以直接修改~/Library/Preferences/com.apple.loginitems.plist配置文件,其中每一個啟動項對應一個字典,有Alias、Icon、Name三個值,其中Name是NSString類型,其它是Data類型,尚不知如此序列化生成,所以目前可以刪除;

3.通過LSSharedFileListInsertItemURL和LSSharedFileListItemRemove方法進行添加刪除,相關的介紹(注冊程序開機啟動).

loginitems

Launchd Daemon

此類型的啟動項都由launchd來負責啟動,launchd是Mac OS下用於初始化系統環境的關鍵進程,它是內核裝載成功之后在OS環境下啟動的第一個進程。采用這種方式來配置自啟動項很簡單,只需要一個plist文件,該plist文件存在的目錄有

~/Library/LaunchAgents

/Library/LaunchAgents

/System/Library/LaunchAgents

以上三個目錄為系統推薦放置的路徑,是當登錄之后啟動的進程

~/Library/LaunchDaemons

/Library/LaunchDaemons

/System/Library/LaunchDaemons

放置在以上三個目錄,則啟動為守護進程,為系統啟動后立即啟動的進程

不同的目錄進程啟動的權限和優先級是不一樣的,你可以通過以下的方式進行設置:

1.通過launchctl load xxx.plist或launchctl unload xxx.plist命令添加和刪除指定啟動項;

2.直接創建、修改、刪除相關目錄下面的plist文件。

plist中主要的字段和它的含義

Label <required, nsstring="">用來在launchd中的一個唯一標識,類似於每一個程序都有一個identifies一樣。

UserName <optional, string="">指定運行啟動項的用戶,只有當Launchd 作為 root 用戶運行時,此項才適用。

GroupName <optional, string="">指定運行啟動項的組,只有當Launchd 作為 root 用戶運行時,此項才適用。

KeepAlive <optional, boolean="">這個key值是用來控制可執行文件是持續運行呢,還是滿足具體條件之后再啟動。默認值為false,也就是說滿足具體條件之后才啟動。當設置值為ture時,表明無條件的開啟可執行文件,並使之保持在整個系統運行周期內。

RunAtLoad <optional, boolean="">標識launchd在加載完該項服務之后立即啟動路徑指定的可執行文件。默認值為false。

Program<optional, string=""> 這個值用來指定進程的可執行文件的路徑。

ProgramArguments<optional,array of="" strings=""> 如果未指定Program時就必須指定該項,包括可執行文件文件和運行的參數。

3.StartupItems

StartupItems,顧名思義,就是在系統啟動過程中運行的程序,它們可以是運行完就立即終止的程序(比如,開機清空廢紙簍),也可以是一直持續在系統運行周期的后台進程。

StartupItems一般存放在以下兩個路徑下:

1)/System/Library/StartupItems

2)/Library/StartupItems

大部分與系統相關的StartupItems都放在/System/Library/StartupItems這個路徑下,它們會先於/Library/StartupItems路徑下的執行,因為前者路徑下的StartupItems提供了系統級的基礎服務,比如crash reporting,core graphics services,system accounting等,而后者路徑在默認情況下是不存在的,需要自己手動創建。

這里我們以/Library/StartupItems目錄下的IcebergControlTower為例。

StartupItems1

簡單來說,在Mac OS X上,一個StartupItems包含以下兩個方面的內容:

1)可執行程序;

2)包含依賴進程關系的plist文件(StartupParameters.plist)。

StartupParameters.plist 是一個屬性列表,包含了運行可執行程序的必要條件,plist中主要的字段和它的含義

StartupItems2

該plist需要獲得root權限,包含了幾個方面的內容:

1)Description;

對該服務的一個簡單的描述,僅僅是描述,並不是說明實際的進程名稱。

2)Provides;

指定StartupItems提供的服務。如圖plist文件Provides中說明,StartupItems開啟的后台進程名為:Iceberg Control Tower。

Provides可以指定多個服務,反映在圖中就是Item0,Item1…等。這里只有Item0。

3)Uses;

指定了在StartupItems加載之前需要開啟的服務。Mac OS X系統先嘗試着加載Uses中指定的服務,然后再加載StartupItems。也就是說,即使Uses中指定的服務沒有加載成功,系統仍然會加載StartupItems。

4)OrderPreference;

指定執行StartupItems的時間順序。這個順序的重要程度排在Uses之后,是指定執行完Uses之后的順序。可能的取值包括:First, Early, None(default), Late, Last。

5)Messages。

The Executable File

注意:1)可執行文件的名稱和它所在的文件夾的文件名是一樣的,這是系統默認的規則。

2)操作可執行文件需要獲得root權限。

3)可執行文件是一個shell腳本。

打開IcebergControlTower文件目錄下同名的可執行文件,可以看到腳本的具體內容:

StartupItems3

一般的可執行文件包含這樣幾個方面的內容:

1)./etc/rc.common

Apple提供的一個腳本庫,該腳本庫里包含了為可執行文件引進參數的接口。在這里load這個庫主要是調用RunService。

2)StartService(), StopService(), RestartService()

當可執行文件接收到的參數為start,stop或者restart時,執行相對應的函數。

參數含義:

start:開機過程中開啟服務;

stop:關機過程中停止服務;

restart:在特定條件下重啟服務。

3)RunService “$1”

執行傳遞給該腳本的第一個參數指定的服務。

“$1” 表示傳給該腳本的第一個參數。例如,傳入的參數為start,則執行StartService()。

(部分內容引用於http://blog.csdn.net/abby_sheen/article/details/7817198)

http://www.tanhao.me/talk/1287.html/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM