最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

配置mac啟動項的3種方式總結

 更新時間:2018年02月26日 08:30:22   作者:極客教程  
這篇文章主要給大家介紹了關于配置mac啟動項的3種方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。

前言

在Mac OS X中,有三種方式來實現啟動項的配置:1)Login Items;2)StartupItems;3)launchd daemon。下面話不多說了,來一起看看詳細的介紹吧。

1. Login Items

打開System Preferences,選擇System -> Accounts,選擇Login Items選項卡,將/Applications目錄下的.app直接拖進右邊的列表中。重啟電腦之后就會發(fā)現列表中的程序在開機之后就自動啟動了。


2. StartupItems

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

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

1)/System/Library/StartupItems

2)/Library/StartupItems

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

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

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

1)可執(zhí)行程序;

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

2.1 The Property List

2.1.1 Plist的key值與含義

StartupParameters.plist 是一個屬性列表,包含了運行可執(zhí)行程序的必要條件。


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

1.Description;

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

2.Provides;

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

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

3.Uses;

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

4.OrderPreference;

指定執(zhí)行StartupItems的時間順序。這個順序的重要程度排在Uses之后,是指定執(zhí)行完Uses之后的順序??赡艿娜≈蛋ǎ篎irst, Early, None(default), Late, Last。

5.Messages。

2.1.2 創(chuàng)建一個StartupParameters.plist文件

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" 
 "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
 <key>Description</key> 
 <string>Iceberg Control Tower Initilaization</string> 
 <key>Provides</key> 
 <array> 
  <string>Iceberg Control Tower</string> 
 </array> 
  <key>Uses</key> 
 <array> 
  <string>Disks</string> 
 </array> 
 <key>OrderPreference</key> 
  <string>None</string> 
</dict> 
</plist>

2.2 The Executable File

注意:

  • 可執(zhí)行文件的名稱和它所在的文件夾的文件名是一樣的,這是系統(tǒng)默認的規(guī)則。
  • 操作可執(zhí)行文件需要獲得root權限。
  • 可執(zhí)行文件是一個shell腳本。

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


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

1)./etc/rc.common

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

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

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

參數含義:

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

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

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

3)RunService “$1”

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

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

3. Launchd Daemon

launchd是Mac OS下用于初始化系統(tǒng)環(huán)境的關鍵進程,它是內核裝載成功之后在OS環(huán)境下啟動的第一個進程。

采用這種方式來配置自啟動項很簡單,只需要一個plist文件,通常(同時也是系統(tǒng)推薦)是將plist放在~/Library/LaunchAgents路徑下。

3.1 plist文件格式及每個字段的含義:

1)Label【required】

該項服務的名稱。

2)OnDemand【optional】

10.4提供的一個key值,功能與KeepAlive的基本功能相似,在10.5及之后的系統(tǒng)中被KeepAlive替代。KeepAlive擴展了更多的功能,除了使用單一的boolean作為key值之外,還能使用字典結合多個key值。

3)Program【ProgramArgument是required的,在沒有ProgramArgument的情況下,必須要包含Program這個key】

指定可執(zhí)行文件的路徑。

4)RunAtLoad【optional】

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

5)WorkingDirectory【optional】

該key在開啟可執(zhí)行文件之前,指定當前工作目錄的路徑。

6)KeepAlive【optional】

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

3.2 創(chuàng)建一個plist文件:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" 
 "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
 <key>Label</key> 
 <string>com.yourcompany.HSPA_USB_MODEM</string> 
 <key>OnDemand</key> 
 <false/> 
 <key>Program</key> 
 <string>/Application/HSPA USB MODEM.app/Running</string> 
 <key>RunAtLoad</key> 
 <true/> 
 <key>WorkingDirectory</key> 
 <string>/Application/HSPA USB MODEM.app</string> 
</dict> 
</plist> 

4. 三種方式的區(qū)別

初步了解了系統(tǒng)的啟動過程之后,再來看這三種配置啟動項的方式,就很容易理解這三種方式之間的差異了。

總的來說,LoginItems 和StartupItems的區(qū)別較明顯。

StartupItems LoginItems
Depedency Ordering Need Do not Need
Load Timing during startup after a user logs in
Launched by WHO by root, but not necessarily the user
Processes types background processes and processes that terminate after running any Mac OS X executable

對于我們自定義的Launchd daemon,通常(同時也是系統(tǒng)推薦)是放在~/Library/LaunchAgents路徑下。launchd進程需要在用戶login之后才能加載。這種方式與LoginItems最大的區(qū)別在于,啟動的進程不同。LoginItems是通過loginwindow去啟動的,而Launchd daemon是通過com.apple.launchd.peruser啟動。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關文章

  • 詳解iOS App中圖片的線段涂鴉功能的添加方法

    詳解iOS App中圖片的線段涂鴉功能的添加方法

    這篇文章主要介紹了如何設計iOS App中圖片的線段涂鴉功能,也就是很多應用中圖片上傳時帶有的編輯功能的基礎,需要的朋友可以參考下
    2016-03-03
  • iOS實現賬號、密碼記住功能

    iOS實現賬號、密碼記住功能

    這篇文章主要為大家詳細介紹了iOS實現賬號、密碼記住功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • iOS實現電商購物車界面示例

    iOS實現電商購物車界面示例

    這篇文章主要為大家詳細介紹了iOS實現一個類似電商購物車界面示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • iOS 適配iPhone X的方法

    iOS 適配iPhone X的方法

    下面小編就為大家分享一篇iOS 適配iPhone X的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • iOS開發(fā)之通過銀行卡號獲取所屬銀行名稱

    iOS開發(fā)之通過銀行卡號獲取所屬銀行名稱

    本文給大家分享一段代碼關于ios通過銀行卡號獲取所屬銀行名稱,代碼簡單易懂,在項目開發(fā)中經常會遇到這樣的功能,需要的朋友一起學習吧
    2016-11-11
  • iOS開發(fā)定時器的三種方法分享

    iOS開發(fā)定時器的三種方法分享

    相信在大家開發(fā)過程中,常常需要在某個時間后執(zhí)行某個方法,或者是按照某個周期一直執(zhí)行某個方法。在這個時候,我們就需要用到定時器。然而,在iOS中有很多方法完成以上的任務,到底有多少種方法呢?下面就通過這篇文章來一起學習學習吧。
    2016-09-09
  • 使用Swift代碼實現iOS手勢解鎖、指紋解鎖實例詳解

    使用Swift代碼實現iOS手勢解鎖、指紋解鎖實例詳解

    這篇文章主要介紹了使用Swift代碼實現iOS手勢解鎖、指紋解鎖的實現過程,非常不錯具有參考借鑒價值,感興趣的朋友一起看看吧
    2016-06-06
  • IOS身份證識別(OCR源碼)詳解及實例代碼

    IOS身份證識別(OCR源碼)詳解及實例代碼

    這篇文章主要介紹了IOS身份證識別(OCR源碼)詳解及實例的相關資料,需要的朋友可以參考下
    2017-03-03
  • iOS 10撥打系統(tǒng)電話彈出框延遲出現問題的解決

    iOS 10撥打系統(tǒng)電話彈出框延遲出現問題的解決

    iOS10的到來,帶來了條幅和鎖屏界面的重新設計,美觀又好看,再加上抬腕喚醒功能,查看需要的信息確實更便捷了,還能快捷回復一些通知,十分輕松,但同樣有問題,下面這篇文章主要給大家介紹了關于iOS 10撥打系統(tǒng)電話彈出框延遲出現問題的解決方法,需要的朋友可以參考下。
    2017-10-10
  • IOS 中UITextField,UITextView,UILabel 根據內容來計算高度

    IOS 中UITextField,UITextView,UILabel 根據內容來計算高度

    這篇文章主要介紹了IOS 中UITextField,UITextView,UILabel 根據內容來計算高度的相關資料,需要的朋友可以參考下
    2017-03-03

最新評論

双桥区| 大埔区| 汉沽区| 当涂县| 沙洋县| 永泰县| 尼勒克县| 贵德县| 深州市| 荔波县| 灵寿县| 长丰县| 图们市| 阿拉善左旗| 资兴市| 庐江县| 泗阳县| 景宁| 陇南市| 郓城县| 安丘市| 磐石市| 张家界市| 丰镇市| 洛隆县| 巩义市| 宁强县| 托克托县| 象山县| 孟村| 宁安市| 武城县| 厦门市| 久治县| 呈贡县| 河曲县| 靖宇县| 绍兴市| 渭源县| 福安市| 乌鲁木齐市|