1、系统偏爱设置-&gt,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-Shared瑟维斯s.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
中找到了它。接下来,请按上面指引的步调,禁止使用该服务。

相关文章