1. 程式人生 > >Mac開機啟動項最詳細的詳解了,讓自動啟動的程式無以遁形

Mac開機啟動項最詳細的詳解了,讓自動啟動的程式無以遁形

##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 用來在launchd中的一個唯一標識,類似於每一個程式都有一個identifies一樣。

UserName 指定執行啟動項的使用者,只有當Launchd 作為 root 使用者執行時,此項才適用。

GroupName 指定執行啟動項的組,只有當Launchd 作為 root 使用者執行時,此項才適用。

KeepAlive 這個key值是用來控制可執行檔案是持續執行呢,還是滿足具體條件之後再啟動。預設值為false,也就是說滿足具體條件之後才啟動。當設定值為ture時,表明無條件的開啟可執行檔案,並使之保持在整個系統執行週期內。

RunAtLoad 標識launchd在載入完該項服務之後立即啟動路徑指定的可執行檔案。預設值為false。

Program 這個值用來指定程序的可執行檔案的路徑。

ProgramArguments 如果未指定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()。

相關推薦

Mac開機啟動詳細自動啟動程式無以

##Login Items Mac OSX的當前使用者成功登入後啟動的程式,該類別的啟動項配置檔案存放在~/Library/Preferences/com.apple.loginitems.plist,所以只針當前使用者,你可以通過以下方式進行設定: 1.在系統偏好設定的“使用者與群組”下面進行設定,可以

Linux系統開機啟動優化 命令 齊天大聖原創作品 命令來自老男孩教育

開機啟動優化Linux系統開機啟動項優化 命令詳解 齊天大聖原創作品 命令來自老男孩教育

Python高階程式設計——裝飾器Decorator(上篇)(絕對是我見過詳細的的教程沒有之一哦)

一、先從一種情況開始看起 1、裝飾器decorator的由來 裝飾器的定義很是抽象,我們來看一個小例子。 先定義一個簡單的函式: def myfunc:     print('我是函式myfunc') myfunc() #呼叫函式 然後呢,我想看看

設定開機啟動、chkconfig命令

chkconfig用於設定系統的各種服務 語法:chkconfig [--add][--del][--list][系統服務]或chkconfig [--level<等級代號>][系統服務][on/off/reset]​ 引數用法:    --add  增

這可能是詳細的一線大廠Mysql面試題

1、MySQL的複製原理以及流程 基本原理流程,3個執行緒以及之間的關聯; 主:binlog執行緒——記錄下所有改變了資料庫資

Linux top命令的用法詳細

command load 命令 技術分享 服務 範圍 web服務器 睡眠狀態 打開 查看多核CPU命令mpstat -P ALL 和 sar -P ALL 說明:sar -P ALL > aaa.txt 重定向輸出內容到文件 aaa.txt top命令經

Runtime

app 面向 default 才會 long con 方便 ast 一起 簡介 OC這門語言把很多事情從編譯和鏈接階段推遲到運行時處理。只要有可能,它就會采取動態運行時機制。這意味著這門語言不僅需要一個編譯器還需要一個運行時系統來執行這些編譯後的代碼。這個運行時系統相當於O

linux--系統啟動及安裝過程

linux啟動先通過一張圖來簡單了解下整個系統啟動的流程,整個過程基本可以分為POST-->BIOS-->MBR(GRUB)-->Kernel-->Init-->Runlevel本文出自 “運維自動化” 博客,請務必保留此出處http://shower.blog.51cto.co

java虛擬機啟動參數分類

ref ssl orf 應用 head adding 提高 args 方式 java啟動參數共分為三類;其一是標準參數(-),所有的JVM實現都必須實現這些參數的功能,而且向後兼容;其二是非標準參數(-X),默認jvm實現這些參數的功能,但是並不保證所有jvm實現都滿足,且

mysql 5.7配置詳細的解釋

重新 _for 必須 請求響應 repos 索引 character 一秒 binlog日誌 配置樣例 首先提供一個我使用的配置樣例 [client] #password=88888888 socket=/data/var/mysql/mysql.sock

CentOS7下如何正確安裝並啟動Docker(圖文

main transacti linux. 機制 cee HA 管理 docke project   我使用了CentOS 7操作系統,可以非常容易地安裝Docker環境。假設,下面我們都是用root用戶進行操作,執行如下命令進行準備工作: yum install

[PXE] linux(centos)PXE服務器搭建安裝啟動及pxe協議

delet 不依賴 ons cat dhcp服務器 ftp local 子網 toc 本章Blog相關Linux知識點 工作環境中,想要安裝Linux但是計算機沒有光驅,或者是有大批量的計算機需要同時安裝Linux,就需要通過部署環境PXE+DHCP+TFTP+HTT

使用vue-cli腳手架創建的目結構

indent 圖片 new ext bubuko 分享 ron 項目 clas 項目整體目錄結構預覽 src目錄 開發過程中基本上操作都在該目錄下進行操作的,項目所有源碼都是在這個目錄下 p.p1 { margin: 0.0px 0.0px

Dubbo啟動過程(Spring方式)

一、使用Spring xml配置方式的啟動過程   1. 解析XML,註冊Bean   2. 監聽Spring事件   3. 啟動或關閉dubbo 二、詳細過程 1. 解析XML,註冊Bean   利用Spring提供的NamespaceHandler擴充套件機制,META-INF下放兩個spri

Springboot專案java -jar 啟動jar包引數

命令例項: nohup java -Xms500m -Xmx500m -Xmn250m -Xss256k -server -XX:+HeapDumpOnOutOfMemoryError -jar $JAR_PATH/test-0.0.1-SNAPSHOT.jar --spring.profile

MAC安裝FSL步驟以及問題

詳情 問題 png bsp 圖形 target 詳解 研究 14. 最近因為涉及到人腦核磁共振圖像的研究,需要用到FSL,以下給出FSL的安裝步驟,詳情可以參考https://fsl.fmrib.ox.ac.uk/fsl/fslwiki/ 第一步是下載XQuartz

intellij idea - Project Structure 目結構(簡單明

image intel 項目 項目信息 alt 點擊 span modules 按鈕 IDEA Project Structure 設置 可以點擊 按鈕,或者使用快捷鍵 Ctrl + Shift + Alt + S 打開 Project Structure 。如下如所

SpringBoot註解

一、註解(annotations)列表 @SpringBootApplication:包含了@ComponentScan、@Configuration和@EnableAutoConfiguration註解。其中@ComponentScan讓spring Boot掃描到Configuration類

SpringBoot基礎篇(三)啟動載入資料CommandLineRunner

        SpringBoot應用程式在啟動時,會遍歷CommandLineRunner介面的例項並執行他們的run()方法。也可以利用@Order註解或者Order介面來規定所有CommandLineRunner例項的執行順序。 /** * 伺服

Android進階(三):Application啟動過程(詳細&簡單)

1.前言 最近一直在看 《Android進階解密》 的一本書,這本書編寫邏輯、流程都非常好,而且很容易看懂,非常推薦大家去看看(沒有收廣告費,單純覺得作者寫的很好)。 上一篇簡單的介紹了Android進階(二): 應用程序啟動過程,最終知道了ActivityThrea