rpki/scripts/rpctl/README.md

3.8 KiB
Raw Blame History

rpctl

rpctl 是四款 RP 本地控制 CLI用于在实验服务器本地独立启动、停止和观察单个 RP/profile 的 all5 run。

部署

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 运行所需动态库。

常用命令

./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

/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.logstderr.logprocess-time.txtexit-code.txtrun-meta.json 以及各 RP 产物。

历史查看与删除

./rpctl show
./rpctl show --failed
./rpctl show --rp ours --limit 20
./rpctl show --json

show 会扫描 runs/<profile>/<run-id>/,展示历史 run_id、状态、start/end 时间、失败 run 列表、运行参数、产物数量和目录路径。

默认表格为了可读性不显示完整路径;需要路径时使用:

./rpctl show --paths
./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 和目录路径。

./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

./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 消歧。