mirror of
https://github.com/mindverse/Second-Me.git
synced 2026-07-11 10:18:23 +00:00
* feat:remove conda from setup * cool. more code about removing conda & env * optimize script * add python check * optimize setup * optimize setup * add warning info * optimize check * add node check & npm check * add cmake install suggestion * add poetry suggestion * add python command check * add python tools * add poetry * add graphrag poetry install command optimization * active poetry shell * fix duplicated log * avoid poetry multipul active * add sqlite3 check * optimize sqlite3 setup suggestion * optimize * add gitignore * reverse compose detect
179 lines
6.4 KiB
Bash
Executable file
179 lines
6.4 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
# Source the logging utilities
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
source "${SCRIPT_DIR}/utils/logging.sh"
|
|
|
|
# Load configuration from .env file
|
|
load_env() {
|
|
if [ -f .env ]; then
|
|
# Only load necessary environment variables
|
|
export LOCAL_APP_PORT=$(grep '^LOCAL_APP_PORT=' .env | cut -d '=' -f2)
|
|
export LOCAL_FRONTEND_PORT=$(grep '^LOCAL_FRONTEND_PORT=' .env | cut -d '=' -f2)
|
|
else
|
|
# Use default port if .env not found
|
|
export LOCAL_APP_PORT=8002
|
|
log_info "Using default port: ${LOCAL_APP_PORT}"
|
|
fi
|
|
}
|
|
|
|
# Main function to stop services
|
|
stop_services() {
|
|
log_step "Stopping services..."
|
|
|
|
# Load environment variables
|
|
load_env
|
|
|
|
# Create run directory if it doesn't exist
|
|
mkdir -p run
|
|
|
|
# Stop backend service
|
|
if [ -f run/.backend.pid ]; then
|
|
BACKEND_PID=$(cat run/.backend.pid)
|
|
if ps -p $BACKEND_PID > /dev/null; then
|
|
kill $BACKEND_PID
|
|
log_success "Backend service stopped (PID: $BACKEND_PID)"
|
|
else
|
|
log_info "Backend process not running, checking port ${LOCAL_APP_PORT}..."
|
|
PORT_PID=$(lsof -ti:${LOCAL_APP_PORT} 2>/dev/null)
|
|
if [ ! -z "$PORT_PID" ]; then
|
|
kill -9 $PORT_PID
|
|
log_success "Backend service forcefully stopped (Port PID: $PORT_PID)"
|
|
else
|
|
log_info "No backend service found running on port ${LOCAL_APP_PORT}"
|
|
fi
|
|
fi
|
|
rm -f run/.backend.pid
|
|
else
|
|
log_info "No backend PID file found, checking port ${LOCAL_APP_PORT}..."
|
|
PORT_PID=$(lsof -ti:${LOCAL_APP_PORT} 2>/dev/null)
|
|
if [ ! -z "$PORT_PID" ]; then
|
|
kill -9 $PORT_PID
|
|
log_success "Backend service forcefully stopped (Port PID: $PORT_PID)"
|
|
else
|
|
log_info "No backend service found running on port ${LOCAL_APP_PORT}"
|
|
fi
|
|
fi
|
|
|
|
# Double-check if port 8002 is still in use
|
|
PORT_PID=$(lsof -ti:${LOCAL_APP_PORT} 2>/dev/null)
|
|
if [ ! -z "$PORT_PID" ]; then
|
|
log_warning "Port ${LOCAL_APP_PORT} is still in use, forcefully terminating process..."
|
|
kill -9 $PORT_PID
|
|
sleep 0.5
|
|
|
|
# Check again
|
|
PORT_PID=$(lsof -ti:${LOCAL_APP_PORT} 2>/dev/null)
|
|
if [ ! -z "$PORT_PID" ]; then
|
|
log_error "Failed to release port ${LOCAL_APP_PORT}, process (PID: $PORT_PID) is still running"
|
|
else
|
|
log_success "Successfully released port ${LOCAL_APP_PORT}"
|
|
fi
|
|
fi
|
|
|
|
# Stop llama-server process
|
|
log_info "Checking for llama-server processes..."
|
|
LLAMA_PIDS=$(pgrep -f "llama-server")
|
|
if [ ! -z "$LLAMA_PIDS" ]; then
|
|
echo "$LLAMA_PIDS" | while read pid; do
|
|
log_info "Stopping llama-server process (PID: $pid)..."
|
|
kill $pid 2>/dev/null
|
|
sleep 0.5
|
|
# Check if process is still running
|
|
if ps -p $pid > /dev/null 2>&1; then
|
|
log_warning "Process still running, using force kill..."
|
|
kill -9 $pid 2>/dev/null
|
|
fi
|
|
done
|
|
log_success "llama-server processes stopped"
|
|
else
|
|
log_info "No llama-server processes found"
|
|
fi
|
|
|
|
# Check if port 8080 is still in use (common port for llama-server)
|
|
log_info "Checking if port 8080 is in use..."
|
|
PORT_PID=$(lsof -ti:8080 2>/dev/null)
|
|
if [ ! -z "$PORT_PID" ]; then
|
|
log_info "Stopping process using port 8080 (PID: $PORT_PID)..."
|
|
kill -9 $PORT_PID
|
|
log_success "Process using port 8080 forcefully terminated"
|
|
else
|
|
log_info "Port 8080 is not in use"
|
|
fi
|
|
|
|
# Stop frontend service
|
|
if [ -f run/.frontend.pid ]; then
|
|
FRONTEND_PID=$(cat run/.frontend.pid)
|
|
if ps -p $FRONTEND_PID > /dev/null; then
|
|
log_info "Stopping frontend process (PID: $FRONTEND_PID)..."
|
|
# use pkill to terminate process tree
|
|
pkill -P $FRONTEND_PID 2>/dev/null
|
|
kill $FRONTEND_PID 2>/dev/null
|
|
sleep 1
|
|
|
|
# check if process is still running
|
|
if ps -p $FRONTEND_PID > /dev/null; then
|
|
log_warning "Frontend process still running, using force kill..."
|
|
kill -9 $FRONTEND_PID 2>/dev/null
|
|
fi
|
|
|
|
log_success "Frontend process stopped (PID: $FRONTEND_PID)"
|
|
else
|
|
log_info "Frontend process not running"
|
|
fi
|
|
rm -f run/.frontend.pid
|
|
fi
|
|
|
|
# check and terminate all possible frontend related processes
|
|
log_info "Checking for any remaining Next.js processes..."
|
|
|
|
# find and terminate all Next.js related processes
|
|
NEXT_PIDS=$(pgrep -f "next dev|next-server")
|
|
if [ ! -z "$NEXT_PIDS" ]; then
|
|
echo "$NEXT_PIDS" | while read pid; do
|
|
log_info "Stopping Next.js process (PID: $pid)..."
|
|
kill $pid 2>/dev/null
|
|
sleep 0.5
|
|
# check if process is still running
|
|
if ps -p $pid > /dev/null 2>&1; then
|
|
log_warning "Process still running, using force kill..."
|
|
kill -9 $pid 2>/dev/null
|
|
fi
|
|
done
|
|
log_success "Next.js processes stopped"
|
|
fi
|
|
|
|
# find and terminate all frontend related npm processes
|
|
NPM_PIDS=$(pgrep -f "npm run dev")
|
|
if [ ! -z "$NPM_PIDS" ]; then
|
|
echo "$NPM_PIDS" | while read pid; do
|
|
log_info "Stopping npm process (PID: $pid)..."
|
|
kill $pid 2>/dev/null
|
|
sleep 0.5
|
|
# check if process is still running
|
|
if ps -p $pid > /dev/null 2>&1; then
|
|
log_warning "Process still running, using force kill..."
|
|
kill -9 $pid 2>/dev/null
|
|
fi
|
|
done
|
|
log_success "npm processes stopped"
|
|
fi
|
|
|
|
# check if frontend port is still in use
|
|
if [ ! -z "${LOCAL_FRONTEND_PORT}" ]; then
|
|
log_info "Checking if port ${LOCAL_FRONTEND_PORT} is still in use..."
|
|
PORT_PID=$(lsof -ti:${LOCAL_FRONTEND_PORT} 2>/dev/null)
|
|
if [ ! -z "$PORT_PID" ]; then
|
|
log_info "Stopping process using port ${LOCAL_FRONTEND_PORT} (PID: $PORT_PID)..."
|
|
kill -9 $PORT_PID
|
|
log_success "Process using port ${LOCAL_FRONTEND_PORT} forcefully terminated"
|
|
else
|
|
log_info "Port ${LOCAL_FRONTEND_PORT} is not in use"
|
|
fi
|
|
fi
|
|
|
|
log_success "All services stopped successfully"
|
|
}
|
|
|
|
# Execute stop services
|
|
stop_services
|