启动项
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。
Borg 查找的位置
Section titled “Borg 查找的位置”在 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 也在这些位置查找。相对路径,或在这些位置都找不到的名称,会显示为 —,因为该项目可能自己设置了搜索路径。
启动项上的规则
Section titled “启动项上的规则”Borg 会用它自带的规则和你的规则(参见用规则扫描文件)扫描每个启动文件的前 1 MiB,以及不超过 64 MiB 的每个程序。被多个项目运行的程序只扫描一次。系统启动代理 和 系统守护进程 项目的程序不会被扫描,因为在 macOS 运行期间,没有任何东西能改动密封的系统卷,它们的详细信息中也会注明这一点。如果某个规则文件无法编译,列表底部会说明略去了多少个规则文件。
本指南跟随 main 分支更新 · Borg 0.11.0 · 1f6bce6
最新发布版本可能尚未包含此处介绍的全部功能。 发布说明
译自英文指南,欢迎指正。命令和键盘快捷键不作翻译。