1. 程式人生 > >mac守護程序啟動與停止

mac守護程序啟動與停止

Mac下的啟動服務主要有三個地方可配置:
1,系統偏好設定->帳戶->登陸項
2,/System/Library/StartupItems 和 /Library/StartupItems/
3,launchd 系統初始化程序配置。

前兩種優化比較簡單,本文主要介紹的是第三種更為複雜的launchd配置優化。
launchd是Mac OS下,用於初始化系統環境的關鍵程序。類似Linux下的init, rc。
我們先來看一下Mac OS X的啟動原理:
1,mac韌體啟用,初始化硬體,載入BootX引導器。
2,BootX載入核心與核心擴充套件(kext)。
3,核心啟動launchd程序。
4,launchd根據  /System/Library/LaunchAgents , /System/Library/LaunchDaemons ,  /Library/LaunchDaemons, Library/LaunchAgents , ~/Library/LaunchAgents 裡的plist配置,啟動服務守護程序。

看完了Mac OS X的啟動原理,我們不難發覺 /System/Library/LaunchAgents , /System/Library/LaunchDaemons ,  /Library/LaunchDaemons, Library/LaunchAgents 五個目錄下的plist屬性檔案是優化系統的關鍵。

下面再來理解幾個基礎概念:

/System/Library和/Library和~/Library目錄的區別?
/System/Library目錄是存放Apple自己開發的軟體。
/Library目錄是系統管理員存放的第三方軟體。
~/Library/是使用者自己存放的第三方軟體。
LaunchDaemons和LaunchAgents的區別?

LaunchDaemons是使用者未登陸前就啟動的服務(守護程序)。
LaunchAgents是使用者登陸後啟動的服務(守護程序)。

開始優化
禁用服務,我們需要用到Mac OS提供的一個工具指令-launchctl
launchctl 指令會針對服務設定一個禁用標誌,launchd啟動時會先檢查這個服務是否被禁用,從而確定是否需要啟用這個服務。

禁用服務的方法1
先找到禁用標誌檔案 /var/db/launchd.db/com.apple.launchd/overrides.plist,檢視你要禁用的服務是否已被禁用了。
有些服務已被禁用,但未列在overrides.plist裡。此時,你還需要檢查這個服務的plist檔案Label欄位是否已經標記為 Disable。

確認這個服務未禁用後,我們就可以通過呼叫如下命令,來禁用服務:
sudo launchctl unload plist檔案路徑
sudo launchctl unload -w plist檔案路徑
比如,我想禁用spotlight,則輸入
sudo launchctl unload /System/Library/LaunchAgents/com.apple.Spotlight.plist
sudo launchctl unload -w /System/Library/LaunchAgents/com.apple.Spotlight.plist

禁用完服務以後,重啟Mac OS即可生效。

禁用服務的方法2,一種更有效且暴力的方法(推薦)
先解除安裝服務
sudo launchctl unload /System/Library/LaunchAgents/com.apple.Spotlight.plist
然後將plist檔案mv到其他目錄備份。
sudo mv /System/Library/LaunchAgents/com.apple.Spotlight.plist ~/launchd.bak重啟。搞定。是不是很簡單!

我個人比較喜歡這種禁用服務的方式,所以推薦一下。

最後,如果發現服務禁用後,系統或軟體出現異常,可以通過如下命令,還原服務:
方法1:
sudo launchctl load -wF plist檔案路徑
方法2:
將備份的plist檔案mv回原來的資料夾。
sudo launchctl load plist檔案路徑

注意:系統級服務的禁用要異常小心,請在禁用前google,確保你熟知這個服務的作用。否則可能導致系統無法啟動。
最安全的做法就是不要去禁用它了。

當然,使用者服務我們還是可以放心禁用的,有問題最多再啟用唄。

下面是我禁用的服務列表:
/System/Library/LaunchDaemons/com.apple.metadata.mds.plist (禁用spotlight的前提)
/System/Library/LaunchAgents/com.apple.Spotlight.plist (Spotlight)
/Library/LaunchDaemons/com.google.keystone.daemon.plist  (Google Software Update)
/Library/LaunchAgents/com.google.keystone.root.agent  (Google Software Update)
~/Library/LaunchAgents/com.google.keystone.agent.plist (Google Software Update,使用者下的程序不需要加 sudo)
~/Library/LaunchAgents/com.apple.CSConfigDotMacCert-ken.wug\@me.com-SharedServices.Agent.plist (me.com的共享服務,我不用)
/System/Library/LaunchDaemons/org.cups.cupsd.plist (印表機)
/System/Library/LaunchDaemons/org.cups.cups-lpd.plist (印表機)
/System/Library/LaunchDaemons/com.apple.blued.plist (藍芽)
/System/Library/LaunchAgents/com.apple.AirPortBaseStationAgent.plist (apple無線基站,我沒有這個裝置)

順便給大家介紹一些常見程序:
UserEventAgent 提供使用者區程式的事件通知。
TISwitcher 輸入法切換。
SystemUIServer 頂部選單欄。
Dock 底部選單欄。。
loginwindow window登陸程序,登出什麼的。
launchd 不用說了,系統主程序。
fontd 字型程序。
bash shell環境主程序,終端。
Airport基站代理 顧名思義。
pboard 剪貼簿,就是複製黏貼。
CCacheServer Kerberos tickets 安全模組,快取了一些票據,類似金鑰。
cvmsComp 跟opengl相關的程序。
kextd 核心擴充套件服務。
notifyd 系統內訊息服務。
diskarbitrationd 磁碟監控服務,響應usb行動硬碟插入,移除等事件。
configd 系統配置,狀態監控服務。
syslogd 系統日誌。
DirectoryService 檔案系統許可權驗證。
distnoted 外部訊息服務,比如iphone, ipad與mac的連線。
ntpd 時間服務。
usbmuxd USB支援。
securityd 安全鑰匙。
mDNSResponder DNS支援。
KernelEventAgent 核心事件響應。
hidd 人體工程學設定支援。
fseventsd FSEvent檔案系統事件支援。
dynamic_pager 虛擬記憶體。swap。
dpd display port支援。
autofsd 自動mount網路檔案系統。
coreservicesd 核心服務程序。
coreaudiod 音訊服務程序。
WindowServer UI介面。
ocspd 對OCRs的安全協議支援。
autofsd 自動mount檔案系統,配置在 /etc/auto_master

相關推薦

mac守護程序啟動停止

Mac下的啟動服務主要有三個地方可配置: 1,系統偏好設定->帳戶->登陸項 2,/System/Library/StartupItems 和 /Library/StartupItems/ 3,launchd 系統初始化程序配置。 前兩種優化比較

Mac下的Jenkins啟動停止

啟動 sudo launchctl load /Library/LaunchDaemons/org.jenkins-ci.plist 停止 sudo launchctl unload /Lib

【iOS程序啟動運轉】- RunLoop個人小結

source ons splay pmo 過渡 它的 端口 launch code 學習iOS開發一般都是從UI開始的,從只知道從IB拖控件,到知道怎麽在方法裏寫代碼,然後會顯示什麽樣的視圖,產生什麽樣的事件,等等。其實程序從啟動開始,一直都是按照蘋果封裝好的代碼運行著,暴

mongoDB 啟動停止

參考 kconfig 1.2 cleanup socket conn parent 方案 ons MongoDB是一個基於分布式文件存儲的數據庫。由C++語言編寫。旨在為WEB應用提供可擴展的高性能數據存儲解決方案。它以高性能、易部署、易使用,存儲數據非常方便等優點被廣泛使

EasyHook庫系列使用教程之四鉤子的啟動停止

ros clu 簡單 line IT data- exclusive 線程 調用 此文的產生花費了大量時間對EasyHook進行深入了解同一時候參考了大量文檔

MYSQL 啟動停止服務命令

mysql 啟動 top linux res 令行 自己 stop service mys 無論你的msql按照的linux還是windows,都要通過命令行來啟動的你服務,這裏講述MYSQL 啟動與停止服務命令。 1,windows 裏面設置 net stop mys

Ubuntu 16.04.05自定義啟動停止指令碼

1、start.sh(啟動指令碼) #!/bin/sh echo "Service: \033[40G[\033[49;32;5mStart\033[0m]\n"; # 啟動Nginx /usr/local/nginx/sbin/nginx # 啟動Php-fpm /usr/local/

MongoDB的啟動停止(一)

1:啟動和停止Mongodb    1)從命令列啟動      執行mongod,啟動MongoDB伺服器,mongod有很多可配置的啟動選項,可以使用mongod --help檢視所有選項   --dbpath:

docker的啟動停止

systemctl  命令是系統服務管理器指令我的是service 啟動docker: systemctl start docker # service  start docker 停止docker: sys

linux mongodb安裝啟動停止

        MongoDB是一個基於分散式檔案儲存的資料庫。旨在為WEB應用提供可擴充套件的高效能資料儲存解決方案。         MongoDB是一個介

在Windows下MySQL啟動停止方法

原文地址:http://blog.csdn.net/ge_haiming/article/details/1902147 MySQL比較好玩一點就是它可以用多種方式啟動,當然它也可以用多種方式關閉。下面我就MySQL的幾種啟動方式簡單的談一談,希望可以給大家提供一些參考。 &

怎麼用Java來實現控制Tomcat啟動停止

停止 //如不能執行,請正確配置tomcat環境 public class conTomCat{ public void close() throws IOException { Process process = Runtime.getRuntime().exec('cmd

kafka叢集一鍵啟動停止shell指令碼

kafka叢集一鍵啟動與停止shell指令碼 準備工作: 已經配置了主機與ip對映關係,已經配置了免密登入; 一、啟動Kafka叢集的指令碼 自定義start_kafka_byfang.sh,啟動kafka叢集中所有節點 #!/bin/bash BROKERS="hx

Rabbit MQ 自定義監聽器容器(Listener Container)的啟動停止

專案中會遇到,MQ佇列的監聽是在某一前提條件準備好的情況下才啟動,比如MQ接收到一系列資料,這些資料的儲存依賴於另外一個MQ訊息的一些配置接收之後才能完成。 指定屬性autoStartup為false,並啟動對應的listener id @RabbitHandl

Oracle11g R2 RAC 啟動停止順序

停止的過程: 停止資料庫例項-> 停止HAS-> 停止CRS, 啟動的過程與之相反 關閉過程(CRS叢集關閉->關閉資料庫) 1.關閉資料庫: 用oracl使用者執行srvctl命令 語法:srvctl stop database -d dbname [

linux下redis安裝、啟動停止,redis做成服務

如果的linux可以連結網路,那麼可以直接聯網下載。直接輸入程式碼:wget http://download.redis.io/releases/redis-3.0.2.tar.gztar zxvf redis-3.0.2.tar.gz 我們會看到在該目錄下多了一個檔案,re

Redis使用守護程序啟動sentinel並指定其日誌目錄

正常redis-server可以通過配置檔案來指定守護程序啟動以及指定日誌路徑,但sentinel就不一樣了。正常啟動redis的sentinel時,程序會直接在前臺跑,一退出sentinel程序就關了: [root@redis_01 redis]# redis-serve

zookeeper服務端和客戶端的啟動停止

zookeeper的命令列都位於專案目錄下的/bin/目錄下面,在執行這行命令前,我們首先進入zookeeper的bin目錄下。 zookeeper服務端命令: 啟動命令:sh zkServer.sh start 停止命令:sh zkServer.sh s

linux下的hadoop配置 sbin/start-all.sh datanode守護程序啟動失敗----解決方案

在shell下輸入jps命令啟動的守護程序中發現缺少datanode 進入關於datanode的log檔案中檢視warm資訊 ls —表示的該目錄下所有檔案 選擇關於datanode的log檔案 檢視關於報錯資訊 2017-03-04 00:2

Linux deamon程序——建立守護程序步驟setsid()函式

轉載地址 一,守護程序概述 Linux Daemon(守護程序)是執行在後臺的一種特殊程序。它獨立於控制終端並且週期性地執行某種任務或等待處理某些發生的事件。它不需要使用者輸入就能執行而且提供某種服務,不是對整個系統就是對某個使用者程式提供服務。Linux系統的大多數伺服