Mac OS启动服务

文章来源: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提供的一个工具指令-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 中找到了它。接下来,请按上面指导的步骤,禁用该服务。


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要制作Mac OS系统的启动U盘,可以按照以下步骤进行操作: 1. 首先,您需要一台运行Mac OS系统的电脑。如果您没有Mac电脑,可以尝试使用虚拟机软件来模拟一个Mac环境。 2. 下载所需的Mac OS系统安装镜像文件。您可以从苹果官方网站或其他可靠来源获取。 3. 准备一个至少容量为16GB的U盘,并确保其中没有重要文件,因为操作会将其格式化。 4. 连接U盘到Mac电脑上,并确保其被正确识别。 5. 打开“终端”应用程序。您可以在“应用程序文件夹”中找到它。 6. 在终端中,输入以下命令来查找U盘的标识符: ```shell diskutil list ``` 7. 根据命令的输出,在标识符列表中找到您的U盘。通常,U盘的标识符类似于“disk2”。 8. 接下来,运行以下命令来卸载U盘: ```shell diskutil unmountDisk /dev/disk2 ``` 请将“disk2”替换为您U盘的标识符。 9. 运行以下命令来将Mac OS系统安装镜像文件写入U盘: ```shell sudo dd if=/path/to/your/macos.img of=/dev/rdisk2 bs=1m ``` 请确保将“/path/to/your/macos.img”替换为您实际的镜像文件路径,并将“disk2”替换为U盘的标识符。 10. 等待操作完成,这可能需要一些时间,取决于镜像文件的大小和U盘的速度。 11. 完成后,您可以将U盘安全地从电脑上移除,并使用它来引导安装Mac OS系统或进行其他操作。 请注意,以上步骤涉及高级操作,如果您不熟悉终端命令和相关概念,请小心操作或寻求专业帮助。 ### 回答2: 要在Mac OS上制作启动U盘,可以按照以下步骤进行操作: 1. 下载和准备安装镜像文件:首先,你需要下载你想要制作启动U盘所需的Mac OS安装镜像文件。该镜像文件可以在苹果官方网站或其他可信的来源上获取。 2. 连接U盘并格式化:将U盘连接到Mac电脑的USB接口上。在“应用程序”文件夹中找到并打开“实用工具”文件夹,然后运行“磁盘工具”应用程序。在左侧的侧栏中,选择你的U盘。点击“抹掉”选项卡,选择“Mac OS 扩展(日志式)”作为格式选项,并为U盘命名。点击“抹去”按钮,以格式化并清除U盘上的所有数据。 3. 创建启动盘:打开“终端”应用程序,它可以在“实用工具”文件夹中找到。在终端中,输入以下命令行:sudo /Applications/Install\ macOS\ Big\ Sur.app/Contents/Resources/createinstallmedia --volume /Volumes/你的U盘名称 --nointeraction。这个命令行会在U盘上创建一个启动盘,其中“你的U盘名称”是你在第2步中为U盘设置的名称。 4. 完成制作:在终端中按下回车键后,系统会要求你输入管理员密码。输入密码后,终端会开始制作启动U盘的过程。这个过程可能需要一些时间,请耐心等待直到终端显示“Install media now available”为止。 5. 安全弹出U盘:在终端显示完成后,你可以拔掉U盘并将其用于启动其他Mac电脑。在安全弹出U盘之前,请确保没有正在访问该U盘上的任何文件。 以上就是在Mac OS上制作启动U盘的简单步骤。请注意,根据所使用的Mac OS版本,上述步骤的细节可能会有所不同。请在操作过程中小心谨慎,以免丢失数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值