Mac开机启动项管理指南:使用命令行优化系统启动速度

44 min read

在日常使用Mac的过程中,开机启动项(Startup Items)是影响系统启动速度和整体性能的重要因素。过多或不必要的启动项不仅会延长开机时间,还可能消耗系统资源,导致运行缓慢。本文将详细介绍如何通过命令行查看、添加和删除Mac的开机启动项,帮助你优化系统启动行为,提升使用体验

什么是开机启动项?

开机启动项(Startup Items)指的是在系统启动或用户登录时自动运行的应用程序、服务或脚本。这些启动项可以通过多种机制实现,包括 Launch AgentsLaunch Daemons登录项(Login Items)以及 Cron Jobs 等。合理管理这些启动项,可以显著提升Mac的启动速度和运行效率。

查看Mac的开机启动项

了解当前系统中的启动项,是管理和优化的第一步。以下是几种常用的方法,通过命令行查看各种类型的启动项。

使用 launchctl 查看 Launch Agents 和 Launch Daemons

Launch AgentsLaunch Daemons 是macOS中用于管理后台服务和应用程序启动项的主要机制。

  • 查看所有已加载的 Launch Agents 和 Launch Daemons:

    launchctl list
    

    该命令将列出所有当前加载的 Launch Agents 和 Launch Daemons,包括系统级和用户级的。

  • 查看系统级的 Launch Daemons:

    ls /Library/LaunchDaemons
    
  • 查看系统级的 Launch Agents:

    ls /Library/LaunchAgents
    
  • 查看用户级的 Launch Agents:

    ls ~/Library/LaunchAgents
    

查看登录项(Login Items)

登录项是在用户登录时自动启动的应用程序。你可以使用以下命令查看当前用户的登录项:

osascript -e 'tell application "System Events" to get the name of every login item'

示例输出:

Perplexity, Loop, 夸克网盘, Raycast, PasteNow, ZeroTier, 百度网盘, Yoink, NeatDownloadManager, ApifoxAppAgent, 阿里云盘, FigmaAgent, Shottr

查看 StartupItems 文件夹

尽管在较新的macOS版本中,/Library/StartupItems目录已不再广泛使用,但有时仍可能存在一些旧版的启动项。

ls /Library/StartupItems

查看 Cron Jobs

Cron Jobs是定时任务,有时也用于开机时执行脚本。

  • 查看当前用户的 Cron Jobs:

    crontab -l
    
  • 查看系统范围的 Cron Jobs:

    sudo cat /etc/crontab
    

使用 systemsetup 查看系统启动设置

systemsetup 工具主要用于配置系统设置,也可以查看某些启动相关的信息。

  • 查看自动登录用户:

    systemsetup -getautoLoginUser
    

管理登录项:添加与删除

在查看了当前的登录项后,你可能需要添加或删除某些不需要的启动项,以优化系统性能。以下是通过命令行管理登录项的具体步骤。

删除指定的登录项

假设你希望删除 Shottr 这个登录项,可以使用以下命令:

osascript -e 'tell application "System Events" to delete login item "Shottr"'

注意: 登录项的名称必须与系统中的名称完全匹配,包括大小写和空格。

批量删除多个登录项

如果需要删除多个登录项,可以依次执行 osascript 命令,或编写一个简单的脚本批量删除。例如,删除 PerplexityLoop

osascript -e 'tell application "System Events" to delete login item "Perplexity"'
osascript -e 'tell application "System Events" to delete login item "Loop"'

添加新的登录项

虽然macOS没有直接的命令行工具来添加登录项,但可以使用 osascript 来实现。例如,添加“Visual Studio Code”到登录项:

osascript -e 'tell application "System Events" to make login item at end with properties {path:"/Applications/Visual Studio Code.app", hidden:false}'

参数说明:

  • path:应用程序的完整路径。
  • hidden:是否在启动时隐藏应用程序窗口(truefalse)。

脚本化管理登录项

为了简化操作,可以将多个删除命令写入一个脚本文件,然后一次性执行。以下是具体步骤:

创建删除脚本

  1. 打开终端

  2. 使用文本编辑器创建脚本文件。例如,使用 nano 创建 remove_login_items.sh

    nano remove_login_items.sh
    
  3. 在编辑器中粘贴以下内容

    #!/bin/bash
    
    # 删除指定的登录项
    osascript -e 'tell application "System Events" to delete login item "Perplexity"'
    osascript -e 'tell application "System Events" to delete login item "Loop"'
    osascript -e 'tell application "System Events" to delete login item "夸克网盘"'
    osascript -e 'tell application "System Events" to delete login item "百度网盘"'
    osascript -e 'tell application "System Events" to delete login item "ApifoxAppAgent"'
    osascript -e 'tell application "System Events" to delete login item "阿里云盘"'
    osascript -e 'tell application "System Events" to delete login item "FigmaAgent"'
    
    echo "指定的登录项已被删除。"
    
  4. 保存并退出编辑器。在 nano 中,按 Ctrl + O 然后 Enter 保存,接着按 Ctrl + X 退出。

赋予脚本执行权限

chmod +x remove_login_items.sh

运行脚本

./remove_login_items.sh

执行后,你应该会看到提示信息:

指定的登录项已被删除。

验证删除结果

为了确认登录项已经被成功删除,可以再次运行以下命令来列出当前的登录项:

osascript -e 'tell application "System Events" to get the name of every login item'

预期输出中不应再包含被删除的项目:

Raycast, PasteNow, ZeroTier, Yoink, NeatDownloadManager, Shottr

通过以上步骤,你可以轻松管理Mac的开机启动项,优化系统性能。如果在操作过程中遇到任何问题,欢迎随时向我们寻求帮助!