正文首要介绍的是第两种尤其复杂的launchd配置优化,本文首要介绍的是第两种特别复杂的launchd配置优化

一、Mac下的启航服务重大八个可安顿的地点

1、系统偏爱设置->帐户->登入项

2、/System/Library/StartupItems 和 /Library/StartupItems/
3、launchd 系统开头化进程配置。

前三种优化比较轻松,本文首要介绍的是第两种越发复杂的launchd配置优化。
launchd是Mac OS下,用于初步化系统意况的根本进度。类似Linux下的init, rc。

 

http://kenwublog.com/mac-os-launchd-tuning

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是用户登入后开发银行的服务(守护进程)。

地方提到的七个目录下的plist文件格式及种种字段的含义:

Key Description Required
Label The name of the job yes
ProgramArguments Strings to pass to the program when it is executed yes
UserName The job will be run as the given user, who may not necessarily be the one who submitted it to launchd. no
inetdCompatibility Indicates that the daemon expects to be run as if it were launched by?inetd no
Program The path to your executable. This key can save the ProgramArguments key for flags and arguments. no
onDemand A?boolean?flag that defines if a job runs continuously or not no
RootDirectory The job will be?chrooted?into another directory no
ServiceIPC Whether the daemon can speak IPC to launchd no
WatchPaths Allows launchd to start a job based on modifications at a file-system path no
QueueDirectories Similar to WatchPath, a queue will only watch an empty directory for new files no
StartInterval Used to schedule a job that runs on a repeating schedule. Specified as the number of seconds to wait between runs. no
StartCalendarInterval Job scheduling. The?syntax?is similar to?cron. no
HardResourceLimits Controls restriction of the resources consumed by any job no
LowPriorityIO Tells the kernel that this task is of a low priority when doing file system I/O no
Sockets An array can be used to specify what socket the daemon will listen on for launch on demand no

看不懂上边地plist配置吗?不要紧,大家的优化计谋是一心卸载服务,所以大家不用关心plist里的配备含义。

二、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属性文件是优化系统的首要性。

起先优化

剥夺服务,大家须求采纳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到别的目录备份。重启。解决。是否很简短!

自己个人相比较欣赏这种禁止使用服务的措施,所以推举一下。

一经开采服务禁止使用后,系统或软件出现万分,能够透过如下命令,还原服务:
方法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有线基站,作者从没那一个装置)

清楚守护进度(服务)名,怎么着找到呼应的plist文件?
将进程(服务)名拷贝,然后到 /System/Library/LaunchAgents
,?/System/Library/LaunchDaemons ,
?/Library/LaunchDaemons,?Library/LaunchAgents , ~/Library/LaunchAgents
几个目录里,通过以下命令查找:

ll|grep 进程(服务)名
比如
ll|grep blued
在 ?/System/Library/LaunchDaemons
中找到了它。接下来,请按上边引导的步调,禁用该服务。

 

http://blog.csdn.net/testcs\_dn/article/details/67634582

 

三、服务目录介绍及连锁概念:
/System/Library和/Library和~/Library目录的界别?
/System/Library目录是存放Apple本身付出的软件。
/Library目录是系统管理员寄放的第三方软件。
~/Library/是用户自身存放的第三方软件。

LaunchDaemons和LaunchAgents的区别?
LaunchDaemons是用户未登录前就运转的劳务(守护进度)。
LaunchAgents是用户登录后开发银行的劳动(守护进度)。

 

四、plist文件格式及各种字段的意义

下边提到的多个目录下的plist文件格式及各样字段的意义:

Key Description Required
Label The name of the job yes
ProgramArguments Strings to pass to the program when it is executed yes
UserName The job will be run as the given user, who may not necessarily be the one who submitted it to launchd. no
inetdCompatibility Indicates that the daemon expects to be run as if it were launched by?inetd no
Program The path to your executable. This key can save the ProgramArguments key for flags and arguments. no
onDemand A boolean flag that defines if a job runs continuously or not no
RootDirectory The job will be chrooted?into another directory no
ServiceIPC Whether the daemon can speak IPC to launchd no
WatchPaths Allows launchd to start a job based on modifications at a file-system path no
QueueDirectories Similar to WatchPath, a queue will only watch an empty directory for new files no
StartInterval Used to schedule a job that runs on a repeating schedule. Specified as the number of seconds to wait between runs. no
StartCalendarInterval Job scheduling. The?syntax?is similar to?cron. no
HardResourceLimits Controls restriction of the resources consumed by any job no
LowPriorityIO Tells the kernel that this task is of a low priority when doing file system I/O no
Sockets An array can be used to specify what socket the daemon will listen on for launch on demand no

看不懂上边地plist配置吗?不妨,大家的优化战略是截然卸载服务,所以大家绝不关怀plist里的配置含义。

 

五、服务优化

剥夺服务,我们须求选取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到别的目录备份。重启。消除。是还是不是很简短!

本身个人相比较喜欢这种禁止使用服务的主意,所以推举一下。

假使发掘服务禁止使用后,系统或软件出现格外,可以透过如下命令,还原服务:
公海赌船网址,方法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有线基站,笔者一直不那个装置)

掌握守护进度(服务)名,怎么样找到呼应的plist文件?
将进程(服务)名拷贝,然后到 /System/Library/LaunchAgents
,/System/Library/LaunchDaemons , /Library/LaunchDaemons,
Library/LaunchAgents , ~/Library/LaunchAgents
三个目录里,通过以下命令查找:

ll|grep 进程(服务)名
比如
ll|grep blued
在 /System/Library/LaunchDaemons
中找到了它。接下来,请按上边引导的步调,禁止使用该服务。

相关文章