3、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
中找到了她。接下来,请按上面指导的手续,禁用该服务。

相关文章