当您打开 Mac 时,各种应用程序、加载项和不可见的后台进程开始自行运行。这通常是您想要的,但您有时可能会看到您不记得自己添加的项目正在运行。他们来自哪里?
由于此类项目可能会增加 Mac 的启动时间并可能降低其性能,因此您需要确保 Mac 仅加载对您有用的项目。本文是关于各种启动和登录项的说明以及如何管理它们的快速入门。
登录项目
打开System Preferences并单击 Users & Groups,然后单击Login Items选项卡。您将看到每次登录时打开的应用程序(甚至文件和文件夹)列表。此列表因 Mac 上的每个用户帐户而异。
项目通常最终出现在此列表中,因为应用程序将它们添加到其中。大多数这样做的应用程序首先会要求您获得许可,或者在其设置中具有“登录时打开”或类似复选框。在任何情况下,您都可以通过单击 (+) 按钮手动将项目添加到列表中,或者通过选择项目并单击减号 (-) 按钮来删除项目。
启动项文件夹
早期版本的 macOS 依靠两个文件夹– /Library/StartupItems和/System/Library/StartupItems – 来保存指定为启动 Mac 时加载的项目。Apple 现在不鼓励使用 StartupItems 文件夹,但一些旧应用程序可能仍会使用它们。
通常你的/System/Library/StartupItems文件夹应该是空的;但如果它包含您不再使用的东西,您可以将不需要的项目拖到废纸篓,以防止它在您下次启动 Mac 时自动加载。
启动守护进程和代理
自 OS 10.4 Tiger 以来,Apple 为开发人员提供了另一种自动启动项目的机制: 启动由进程 控制的守护进程和代理launchd
。这为开发人员提供了更大的灵活性,但对用户来说不太透明。
不是直接打开应用程序,而是 launchd
加载特殊格式的 .plist 文档,这些文档指定应该启动什么以及在什么情况下启动。有时这些启动项会在后台持续运行,有时它们会按预定的时间间隔运行,有时它们会根据需要运行(例如,响应某个文件或文件夹的更改等事件)然后退出。
launchd 使用的 .plist 文件可以占用五个文件夹中的任何一个,它们的位置决定了项目的加载时间和权限:
- /Library/LaunchDaemons 和 /System/Library/LaunchDaemons 中的项目在 Mac 启动时加载,并以 root 用户身份运行。
- /Library/LaunchAgents 和 /System/Library/LaunchAgents 中的项目在任何用户登录时加载,并以该用户身份运行。
- /Users/ your-username /Library/LaunchAgents 中的项目仅在该特定用户登录时加载,并以该用户身份运行。
不要更改系统文件:在这五个文件夹中,位于 /System 文件夹中的两个(/System/Library/LaunchDaemons 和 /System/Library/LaunchAgents)用于作为 macOS 一部分包含的组件,您应该抵制诱惑删除或更改它们 – 它们对于保持 Mac 正常运行至关重要。
随意修改其他:随意浏览其他文件夹中的文件以查看其中的内容。你可以修改它们——例如,禁用它们或改变它们的运行频率——但在你这样做之前,你应该了解一些关于它们如何工作的事情。
当您启动 Mac 或登录时,相关文件夹中的启动项会被加载(即向系统注册),除非它们设置了 Disabled 标志。此后,即使您将启动项拖到废纸篓,它们的指示也会一直执行,直到您重新启动。要查看 Mac 上所有当前加载的启动项的列表,请打开终端(在 /Applications/Utilities 中)并键入launchctl list
,然后按 Return。
如果您想停止运行启动项而无需重新启动,请打开终端并键入launchctl unload
后跟一个空格和启动项的完整路径。添加项目完整路径的一种简单方法是将其拖动到终端窗口)例如,使用以下命令:
launchctl 卸载 ~/Library/LaunchAgents/com.apple.FolderActions.enabled.plist
它卸载启用 AppleScript 文件夹操作的启动代理。重复该命令load
而不是unload
重新打开它。
因为大多数启动项都按计划或按需运行,并且因为其中任何一项都可能被禁用,所以某个文件夹中存在某些内容并不一定意味着它所管理的进程当前正在运行。要查看当前正在运行的内容,请打开活动监视器——但请记住,活动监视器中显示的给定进程的名称可能与告诉 macOS 启动它的 .plist 文件的名称不同。
其他情况
尽管这些方法是在 macOS 中自动启动应用程序的最常用方法,但它们并不是唯一的方法。如果您有一个无法在这些地方追踪的神秘过程,它也可能是其中之一:
内核扩展:内核扩展或 kexts,位于 /System/Library/Extensions 并在启动时加载。它们提供低级功能,例如处理音频和添加对外围设备的支持。Mac 上的大多数 kext 都是 macOS 的一部分。删除第三方 kext 最安全的方法是运行开发人员提供的卸载程序。
Crons: Cron
是 macOS 内置的 Unix 调度实用程序。它或多或少不再支持launchd
.
登录脚本: 登录脚本,如启动项,曾在旧版本的 macOS 中使用,但现在已弃用。