跳转到内容
GitHub

启动项

Alt-U 或 命令 → 启动项 会列出所有设置为自动启动的项目:开机时、登录时、按计划,或每当 shell 或 SSH 登录启动时运行的程序。最近改动的排在最前,因此最近添加或编辑的内容都在顶部。它与进程监视器一样,来自内置的系统插件。列表占据当前窗格,另一个窗格详细显示所选项目。

每一行显示其文件的最后修改时间、所在位置以及它运行的内容。窗格更宽时,还会显示文件的所有者,以及其程序是否在那里:存在,或在其指定的路径不存在时显示 缺失。缺失的程序值得留意,因为之后无论谁在那里放一个文件,它都会以该项目的权限运行。规则 列列出项目匹配的规则,按级别着色,只要有任何项目匹配了规则就会出现。列表上方的一行统计项目总数以及其中匹配规则的数量。

详细信息显示文件及其行号、项目运行的内容、程序及 Borg 找到它的位置、以文件原话描述的运行时机(RunAtLoad、@reboot、日历时间或 systemd 目标)、运行身份、文件的所有者以及改动的精确时间。在 规则 下,每个匹配都会注明是 在其文件中 还是 在其程序中,并说明规则查找的内容、它在哪些无害情况下也会匹配,以及规则的来源。被其文件关闭的项目以暗色显示,详细信息中会写明 已在自身文件中关闭,因此不会启动。

按键 操作
Enter, Alt-O 在列表旁打开该项目的文件所在的文件夹
F3 / F4 查看 / 编辑该项目的文件
/ 筛选行;↑↓ 仍可移动,Enter 保留筛选条件,Esc 清除筛选条件
R 重新读取所有位置
Ctrl-C 复制该项目运行的内容
Alt-W 最大化列表
Esc 关闭屏幕,保留筛选条件

按 Enter 或双击某一行,会在另一个窗格中打开其文件所在的文件夹,并把光标放在该文件上,列表保持原样。Tab 在列表和文件之间切换,在列表中按 Esc 或按 Alt-U 会恢复详细信息。筛选会保留包含你输入的每个词语的项目,查找范围包括位置、名称、运行的内容、文件路径、所有者、运行身份、运行时机、存在 或 缺失,以及所匹配规则的名称。在词语前加 ! 可排除它匹配的项目:root !timer 会保留 root 的项目,但不包括定时器。每个位置还有一个供筛选和智能体使用的简称,例如 launch-daemon、systemd-timer 或 ssh-authorized-key。

在 macOS 上:

  • 用户启动代理:~/Library/LaunchAgents。
  • 启动代理 和 启动守护进程:/Library/LaunchAgents 和 /Library/LaunchDaemons。
  • 系统启动代理 和 系统守护进程:/System/Library/LaunchAgents 和 /System/Library/LaunchDaemons,位于密封的系统卷上。
  • Cron 任务:/usr/lib/cron/tabs 中的 crontab,以及 /etc/crontab。
  • periodic 脚本:/etc/periodic 和 /usr/local/etc/periodic 中的每日、每周和每月脚本。

在 Linux 上:

  • 服务 和 定时器:/etc/systemd/system、/usr/local/lib/systemd/system、/usr/lib/systemd/system 和 /lib/systemd/system 中的 systemd 单元,以及它们的 .wants 和 .requires 文件夹从其他任何位置链接进来的单元。
  • 用户服务 和 用户定时器:/etc/systemd/user、/usr/local/lib/systemd/user、/usr/lib/systemd/user、~/.config/systemd/user 和 ~/.local/share/systemd/user。
  • 自动启动:~/.config/autostart 和 /etc/xdg/autostart 中的桌面项。
  • Cron 任务:/etc/crontab、/etc/cron.d,以及 /var/spool/cron/crontabs 或 /var/spool/cron 中的 crontab。
  • Cron 脚本:/etc/cron.hourly、/etc/cron.daily、/etc/cron.weekly 和 /etc/cron.monthly。
  • Anacron 任务:/etc/anacrontab。
  • rc.local:/etc/rc.local。
  • 预加载:/etc/ld.so.preload,即加载到每个启动的程序中的库。
  • Shell 启动文件:除下述文件外,还包括 /etc/profile.d 中的脚本。

在两种系统上,Shell 启动文件 都涵盖你主文件夹中的 zsh、bash 和 fish 启动文件,例如 ~/.zshrc、~/.bashrc、~/.profile 和 ~/.config/fish/config.fish,以及它们在 /etc 中的系统级版本。SSH 密钥 会列出 ~/.ssh/authorized_keys 和 ~/.ssh/authorized_keys2 中的每个密钥及其注释,密钥强制执行某条命令时也会列出该命令。

Borg 以你的权限读取这些位置。存在但对你关闭的位置会以 无法读取 加路径的形式显示在列表底部;以管理员身份运行 Borg 才能查看其中的内容。你自己的 crontab 是个例外:当存放 crontab 的文件夹对你关闭时(macOS 上就是如此),Borg 会通过 crontab -l 读取它。

以完整路径或 ~/ 指定的程序,如果那里什么都没有,就算作 缺失。只有名称的程序会在 /usr/local/sbin、/usr/local/bin、/usr/sbin、/usr/bin、/sbin 和 /bin 中查找,cron 和 launchd 也在这些位置查找。相对路径,或在这些位置都找不到的名称,会显示为 —,因为该项目可能自己设置了搜索路径。

Borg 会用它自带的规则和你的规则(参见用规则扫描文件)扫描每个启动文件的前 1 MiB,以及不超过 64 MiB 的每个程序。被多个项目运行的程序只扫描一次。系统启动代理 和 系统守护进程 项目的程序不会被扫描,因为在 macOS 运行期间,没有任何东西能改动密封的系统卷,它们的详细信息中也会注明这一点。如果某个规则文件无法编译,列表底部会说明略去了多少个规则文件。

本指南跟随 main 分支更新 · Borg 0.11.0 · 1f6bce6
最新发布版本可能尚未包含此处介绍的全部功能。 发布说明

译自英文指南,欢迎指正。命令和键盘快捷键不作翻译。