修复9
This commit is contained in:
Executable
+65
@@ -0,0 +1,65 @@
|
||||
#!/bin/bash
|
||||
|
||||
# --- 配置变量 ---
|
||||
WORK_DIR="/home/fmq/program/SpectraRust"
|
||||
CMD_PATH="/home/fmq/.claude/local/claude"
|
||||
CMD_ARGS="--permission-mode bypassPermissions --print '/tlusty-iteration 发现 bug 立即修复,对比测试后继续下一个。禁止询问,禁止总结报告,禁止跳过复杂模块。'"
|
||||
|
||||
# 日志文件路径:修改为工作目录内部
|
||||
LOG_FILE="${WORK_DIR}/logs/claude_$(date +%Y%m%d_%H%M%S).log"
|
||||
|
||||
# --- 1. 环境检查 ---
|
||||
# 检查工作目录是否存在
|
||||
if [ ! -d "$WORK_DIR" ]; then
|
||||
echo "❌ 错误: 工作目录不存在: $WORK_DIR"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 检查命令文件是否存在且可执行
|
||||
if [ ! -x "$CMD_PATH" ]; then
|
||||
echo "❌ 错误: 命令不存在或不可执行: $CMD_PATH"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# --- 新增:检查是否已有 claude 进程在运行 ---
|
||||
echo "正在检查是否有 claude 进程在运行..."
|
||||
# 使用 ps aux 列出所有进程,然后 grep 查找 'claude',再用 grep -v grep 排除掉 grep 命令本身
|
||||
if ps aux | grep '[c]laude' > /dev/null; then
|
||||
echo "⚠️ 检测到 claude 进程已在运行,退出脚本。"
|
||||
# 可选:显示正在运行的进程信息
|
||||
ps aux | grep '[c]laude'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# --- 2. 启动进程 ---
|
||||
# 切换到工作目录
|
||||
cd "$WORK_DIR" || exit 1
|
||||
|
||||
# 执行命令
|
||||
# nohup 保证退出终端后进程不挂
|
||||
# < /dev/null 防止进程读取终端输入导致挂起
|
||||
# > "$LOG_FILE" 2>&1 将标准输出和错误输出都重定向到日志文件
|
||||
nohup "$CMD_PATH" $CMD_ARGS < /dev/null > "$LOG_FILE" 2>&1 &
|
||||
CURRENT_PID=$!
|
||||
|
||||
# --- 3. 验证启动结果 ---
|
||||
# 短暂休眠,给进程一点初始化时间,以便捕获即时崩溃(如缺少动态库)
|
||||
sleep 0.5
|
||||
|
||||
# 检查进程是否仍然存活
|
||||
if kill -0 "$CURRENT_PID" 2>/dev/null; then
|
||||
echo "启动成功!"
|
||||
echo "PID: $CURRENT_PID"
|
||||
echo "日志路径: $LOG_FILE"
|
||||
exit 0
|
||||
else
|
||||
echo "❌ 启动失败! 进程已意外退出。"
|
||||
echo "--- 错误日志预览 ---"
|
||||
# 如果日志文件存在,打印其内容
|
||||
if [ -f "$LOG_FILE" ]; then
|
||||
cat "$LOG_FILE"
|
||||
else
|
||||
echo "(无日志文件生成)"
|
||||
fi
|
||||
exit 1
|
||||
fi
|
||||
Reference in New Issue
Block a user