100 lines
2.9 KiB
Bash
Executable File
100 lines
2.9 KiB
Bash
Executable File
#!/bin/bash
|
||
|
||
# 确保使用 bash 运行
|
||
if [ -z "$BASH_VERSION" ]; then
|
||
exec bash "$0" "$@"
|
||
fi
|
||
|
||
# 颜色定义
|
||
GREEN='\033[0;32m'
|
||
YELLOW='\033[1;33m'
|
||
RED='\033[0;31m'
|
||
NC='\033[0m' # No Color
|
||
|
||
# 打印带颜色的消息
|
||
print_yellow() { printf "${YELLOW}%s${NC}\n" "$1"; }
|
||
print_green() { printf "${GREEN}%s${NC}\n" "$1"; }
|
||
print_red() { printf "${RED}%s${NC}\n" "$1"; }
|
||
|
||
print_yellow "=== 停止 7861 和 8501 端口服务 ==="
|
||
|
||
for port in 7861 8501; do
|
||
pids=$(lsof -t -i:"$port" 2>/dev/null)
|
||
if [ -n "$pids" ]; then
|
||
print_yellow "正在停止端口 $port 的进程: $pids"
|
||
kill -9 $pids 2>/dev/null
|
||
print_green "端口 $port 已停止"
|
||
else
|
||
echo "端口 $port 无运行中的服务"
|
||
fi
|
||
done
|
||
|
||
# 也停止所有 startup.py 进程
|
||
pids=$(ps aux | grep "[p]ython.*startup.py -a" | awk '{print $2}')
|
||
if [ -n "$pids" ]; then
|
||
print_yellow "正在停止 startup.py 进程: $pids"
|
||
kill -9 $pids 2>/dev/null
|
||
print_green "startup.py 进程已停止"
|
||
fi
|
||
|
||
echo ""
|
||
print_yellow "=== 启动服务 ==="
|
||
|
||
cd /home/gc/gangyan/langchain-chat
|
||
|
||
# 初始化 conda(确保 PATH 中包含 conda 路径)
|
||
CONDA_INIT="/root/miniconda3/etc/profile.d/conda.sh"
|
||
if [ -f "$CONDA_INIT" ]; then
|
||
# 初始化 conda,将 conda 路径添加到 PATH
|
||
. "$CONDA_INIT" 2>/dev/null || source "$CONDA_INIT" 2>/dev/null
|
||
fi
|
||
|
||
# 查找 conda 可执行文件(按优先级)
|
||
if command -v conda &> /dev/null; then
|
||
CONDA_EXE="conda"
|
||
elif [ -f "/root/miniconda3/bin/conda" ]; then
|
||
CONDA_EXE="/root/miniconda3/bin/conda"
|
||
elif [ -f "/root/miniconda3/condabin/conda" ]; then
|
||
CONDA_EXE="/root/miniconda3/condabin/conda"
|
||
else
|
||
print_red "错误: 未找到 conda 命令"
|
||
print_red "请检查 conda 是否已安装: /root/miniconda3"
|
||
exit 1
|
||
fi
|
||
|
||
# 使用 conda 环境启动
|
||
print_yellow "使用环境: gangyan"
|
||
print_yellow "日志文件: nohup.out"
|
||
print_yellow "Conda路径: $CONDA_EXE"
|
||
|
||
# 获取 python 的完整路径
|
||
PYTHON_EXE="/root/miniconda3/envs/gangyan/bin/python"
|
||
if [ ! -f "$PYTHON_EXE" ]; then
|
||
# 尝试通过 conda run 获取路径
|
||
PYTHON_EXE="$($CONDA_EXE run -n gangyan which python 2>/dev/null)"
|
||
if [ -z "$PYTHON_EXE" ] || [ ! -f "$PYTHON_EXE" ]; then
|
||
print_red "错误: 无法找到 python 可执行文件"
|
||
print_red "请检查 conda 环境 gangyan 是否已安装"
|
||
exit 1
|
||
fi
|
||
fi
|
||
|
||
print_yellow "Python路径: $PYTHON_EXE"
|
||
|
||
# 直接使用 python 完整路径启动(不依赖 conda activate,更可靠)
|
||
# 设置 PYTHONPATH 确保能正确导入模块
|
||
export PYTHONPATH="/home/gc/gangyan/langchain-chat:$PYTHONPATH"
|
||
cd /home/gc/gangyan/langchain-chat
|
||
nohup "$PYTHON_EXE" startup.py -a >> nohup.out 2>&1 &
|
||
PID=$!
|
||
|
||
print_green "服务已启动,PID: $PID"
|
||
print_yellow "日志文件: /home/gc/gangyan/langchain-chat/nohup.out"
|
||
print_yellow "查看日志: tail -f nohup.out"
|
||
|
||
# 等待几秒后显示日志
|
||
sleep 2
|
||
echo ""
|
||
print_yellow "=== 最近日志 ==="
|
||
tail -20 nohup.out
|