rpki/scripts/rpctl/README.md

104 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# rpctl
`rpctl` 是四款 RP 本地控制 CLI用于在实验服务器本地独立启动、停止和观察单个 RP/profile 的 all5 run。
## 部署
```bash
mkdir -p /root/rpki_4rp_ctl
rsync -a rpki_2/rpki/scripts/rpctl/ root@47.77.237.41:/root/rpki_4rp_ctl/
rsync -a specs/develop/20260707_3/feature100_four_rp_interval_archive/runtime_bundle/ root@47.77.237.41:/root/rpki_4rp_ctl_runtime_bundle/
ssh root@47.77.237.41 'cd /root/rpki_4rp_ctl && ./rpctl init --bundle /root/rpki_4rp_ctl_runtime_bundle'
```
`--bundle` 目录需要包含 #100 runtime bundle 的 `bin/``lib/``fixtures/``scripts/``versions.json`。不要使用早期 precheck 目录作为标准 bundle因为它可能缺少 FORT 运行所需动态库。
## 常用命令
```bash
./rpctl list
./rpctl status
./rpctl start --rp ours-pp-object-cache --interval 10m --runs 6 --rirs all5
./rpctl start --rp routinator --interval 0 --runs 1 --rirs apnic
./rpctl continue --run-id <successful-run-id> --runs 3 --interval 10m
./rpctl tail
./rpctl show
./rpctl show --failed
./rpctl view --run-id 20260709T081122Z_ours-pp-object-cache_2runs_600s
./rpctl delete --run-id <old-run-id> --dry-run
./rpctl paths
./rpctl stop
./rpctl stop --force
```
## Profile
| 输入别名 | 实际 profile |
|---|---|
| `ours`, `ours-rp`, `ours-cached` | `ours-pp-object-cache` |
| `ours-baseline` | `ours-no-cache` |
| `routinator` | `routinator-latest-release` |
| `rpki-client` | `rpki-client-latest-release` |
| `fort` | `fort-latest-release` |
## 数据目录
默认部署根目录就是 `rpctl` 所在目录,例如 `/root/rpki_4rp_ctl`
```text
/root/rpki_4rp_ctl/
bin/ lib/ fixtures/ scripts/
state/current.json
logs/runner-*.log
runs/<profile>/<run-id>/profiles/<profile>/runs/run_0001/
```
每个 run 目录包含 `stdout.log``stderr.log``process-time.txt``exit-code.txt``run-meta.json` 以及各 RP 产物。
## 历史查看与删除
```bash
./rpctl show
./rpctl show --failed
./rpctl show --rp ours --limit 20
./rpctl show --json
```
`show` 会扫描 `runs/<profile>/<run-id>/`,展示历史 `run_id`、状态、start/end 时间、失败 run 列表、运行参数、产物数量和目录路径。
默认表格为了可读性不显示完整路径;需要路径时使用:
```bash
./rpctl show --paths
```
```bash
./rpctl view --run-id <run-id>
./rpctl view --rp ours --run-id <run-id>
./rpctl view --run-id <run-id> --command
./rpctl view --run-id <run-id> --json
```
`view` 用于查看指定历史 run 的摘要和每一轮子 run 明细包括运行耗时、max RSS、VRP/VAP 数量、同步模式、exit code 和目录路径。
```bash
./rpctl delete --run-id <old-run-id> --dry-run
./rpctl delete --run-id <old-run-id> --yes
./rpctl delete --rp ours --run-id <duplicated-run-id> --yes
```
`delete` 只能删除非 running 的 run。建议先用 `--dry-run` 确认路径;真实删除必须显式加 `--yes`。删除内容包括 `runs/<profile>/<run-id>/` 和匹配的 `logs/runner-<run-id>*.log`
如果历史 run 是中途停止的 incomplete run且没有 `run-meta.json`、normalized 文件或原始输出文件,则 VRP/VAP、wall、RSS 会显示为 `-`,表示该 run 没有可统计产物。
## 续跑已有成功 run
```bash
./rpctl continue --run-id <successful-run-id> --runs 3 --interval 10m
./rpctl continue --rp routinator --run-id <successful-run-id> --runs 1 --interval 0
```
`continue` 只接受已经成功结束的历史 run id并在原目录下追加 `run_000N`。它不会清理 profile state也不会给 RP 强制传 snapshot-only 参数;后续 run 是 delta 还是 snapshot 由各 RP 根据自身持久状态决定。
续跑会复用原 run 的 RIR 集合,避免在同一个 state 目录里混用不同 scope。若同一个 `run-id` 在多个 profile 下存在,需要加 `--rp` 消歧。