本文首要介绍的是第两种更加复杂的launchd配置优化,3、launchd 系统开首化进程配置公海赌船网址

一、Mac下的开行服务重点多少个可配置的地方

1、系统偏好设置->帐户->登陆项

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

前两种优化相比简单,本文重要介绍的是第两种更加复杂的launchd配置优化。
launchd是Mac OS下,用于开端化系统环境的首要性进程。类似Linux下的init, rc。

 

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

二、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是用户登陆后开行的劳动(守护进程)。

 

 

三、服务目录介绍及连锁概念:
/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里的布局含义。

 

四、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(谷歌 Software
Update,用户下的历程不需要加 sudo)
~/Library/LaunchAgents/com.apple.CSConfigDotMacCert-ken.wug\@me.com-Shared瑟维斯(Service)(Service)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
中找到了它。接下来,请按下面指点的步骤,禁用该服务。

五、服务优化

剥夺服务,我们需要利用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瑟维斯(Service)(Service)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
中找到了它。接下来,请按上边指点的手续,禁用该服务。

相关文章