# 启动脚本进程判断改为 ps -ef 实施记录

## 修改内容

- 将 `bin/prod/restart_java.sh` 中的后端进程收集逻辑由 `pgrep -f` 改为 `ps -ef | awk`
- 将 `bin/restart_java_backend.sh` 中的后端进程收集逻辑由 `pgrep -f` 改为 `ps -ef | awk`
- 删除 `bin/restart_java_backend.sh` 中对 `pgrep` 命令的依赖校验
- 更新 `bin/prod/restart_java_test.sh`，补充 `ps -ef` / `pgrep` 约束校验，并修正测试夹具中的 JDK 目录
- 新增 `bin/restart_java_backend_test.sh`，校验本地后端重启脚本已改用 `ps -ef`

## 实现说明

- 两份脚本都只在 `ps -ef` 结果中匹配同时满足“包含脚本标记参数”和“`-jar` 指向目标 jar”这两个条件的 Java 进程
- 进程筛选时继续忽略 `<defunct>` 记录，避免误判僵尸进程
- 现有 PID 文件校验逻辑保持不变，本次只收敛“扫描当前是否已有进程”的实现方式

## 路径检查

- 已确认本次实施记录保存路径为 `doc/implementation-report-2026-04-09-start-script-ps-ef.md`

## 验证结果

- 已执行 `sh bin/prod/restart_java_test.sh`
- 已执行 `sh bin/restart_java_backend_test.sh`
- 已执行 `sh -n bin/prod/restart_java.sh && sh -n bin/restart_java_backend.sh`
- 已确认测试中拉起的假 Java 进程在脚本收尾阶段自动停止并清理
