fix(llm-runner): terminate existing instances using fuser -k and pkill before launching
This commit is contained in:
parent
954b6728e8
commit
8af11cc8ef
1 changed files with 16 additions and 14 deletions
|
|
@ -84,14 +84,8 @@ cmd_stop() {
|
||||||
pkill -f "llama-server" 2>/dev/null || true
|
pkill -f "llama-server" 2>/dev/null || true
|
||||||
log_success "All llama-server processes terminated."
|
log_success "All llama-server processes terminated."
|
||||||
else
|
else
|
||||||
local pid
|
fuser -k -9 "$target/tcp" 2>/dev/null || true
|
||||||
pid=$(lsof -ti :"$target" 2>/dev/null || fuser "$target/tcp" 2>/dev/null || true)
|
log_success "Killed server on port ${target}."
|
||||||
if [ -n "$pid" ]; then
|
|
||||||
kill "$pid" 2>/dev/null || true
|
|
||||||
log_success "Killed server on port ${target} (PID: ${pid})."
|
|
||||||
else
|
|
||||||
log_warn "No active server found on port ${target}."
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -122,12 +116,10 @@ launch_instance() {
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Check if port is already in use
|
# Ensure target port is free
|
||||||
local existing_pid
|
if fuser "$port/tcp" >/dev/null 2>&1; then
|
||||||
existing_pid=$(lsof -ti :"$port" 2>/dev/null || fuser "$port/tcp" 2>/dev/null || true)
|
log_warn "Port ${port} is in use. Stopping existing process on port ${port}..."
|
||||||
if [ -n "$existing_pid" ]; then
|
fuser -k -9 "$port/tcp" 2>/dev/null || true
|
||||||
log_warn "Port ${port} is already in use by PID ${existing_pid}. Terminating existing process..."
|
|
||||||
kill -9 "$existing_pid" 2>/dev/null || true
|
|
||||||
sleep 1
|
sleep 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
@ -189,6 +181,8 @@ launch_instance() {
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
cmd_cluster() {
|
cmd_cluster() {
|
||||||
log_info "Starting Multi-Agent Cluster (SuperQwen 27B + 2x Qwen 4B)..."
|
log_info "Starting Multi-Agent Cluster (SuperQwen 27B + 2x Qwen 4B)..."
|
||||||
|
pkill -f "llama-server" 2>/dev/null || true
|
||||||
|
sleep 1
|
||||||
|
|
||||||
# Trap to gracefully stop all background instances on Ctrl+C
|
# Trap to gracefully stop all background instances on Ctrl+C
|
||||||
cleanup_cluster() {
|
cleanup_cluster() {
|
||||||
|
|
@ -245,6 +239,8 @@ cmd_cluster() {
|
||||||
|
|
||||||
cmd_muse() {
|
cmd_muse() {
|
||||||
log_info "Starting Muse-Glimmer 30B Solo Server (Max Context: 128K)..."
|
log_info "Starting Muse-Glimmer 30B Solo Server (Max Context: 128K)..."
|
||||||
|
pkill -f "llama-server" 2>/dev/null || true
|
||||||
|
sleep 1
|
||||||
local model="${MODEL:-${SCRIPT_DIR}/models/muse-glimmer/Muse-Glimmer-30B-UD-Q4_K_XL.gguf}"
|
local model="${MODEL:-${SCRIPT_DIR}/models/muse-glimmer/Muse-Glimmer-30B-UD-Q4_K_XL.gguf}"
|
||||||
local mmproj="${MMPROJ:-${SCRIPT_DIR}/models/muse-glimmer/mmproj-Muse-Glimmer-30B-Q8_0.gguf}"
|
local mmproj="${MMPROJ:-${SCRIPT_DIR}/models/muse-glimmer/mmproj-Muse-Glimmer-30B-Q8_0.gguf}"
|
||||||
if [ "${mmproj}" = "none" ]; then mmproj=""; fi
|
if [ "${mmproj}" = "none" ]; then mmproj=""; fi
|
||||||
|
|
@ -263,6 +259,8 @@ cmd_muse() {
|
||||||
|
|
||||||
cmd_superqwen() {
|
cmd_superqwen() {
|
||||||
log_info "Starting SuperQwen 3.8 27B Solo Server (Max Context: 256K)..."
|
log_info "Starting SuperQwen 3.8 27B Solo Server (Max Context: 256K)..."
|
||||||
|
pkill -f "llama-server" 2>/dev/null || true
|
||||||
|
sleep 1
|
||||||
local model="${MODEL:-${SCRIPT_DIR}/models/Qwen3.8/SuperQwen3.8-27b-abliterated-Q4_K_M.gguf}"
|
local model="${MODEL:-${SCRIPT_DIR}/models/Qwen3.8/SuperQwen3.8-27b-abliterated-Q4_K_M.gguf}"
|
||||||
if [ ! -f "${model}" ] && [ -f "${SCRIPT_DIR}/models/Qwen3.8/Qwen3.8-27B-UD-Q4_K_XL.gguf" ]; then
|
if [ ! -f "${model}" ] && [ -f "${SCRIPT_DIR}/models/Qwen3.8/Qwen3.8-27B-UD-Q4_K_XL.gguf" ]; then
|
||||||
model="${SCRIPT_DIR}/models/Qwen3.8/Qwen3.8-27B-UD-Q4_K_XL.gguf"
|
model="${SCRIPT_DIR}/models/Qwen3.8/Qwen3.8-27B-UD-Q4_K_XL.gguf"
|
||||||
|
|
@ -284,6 +282,8 @@ cmd_superqwen() {
|
||||||
|
|
||||||
cmd_qwen4b() {
|
cmd_qwen4b() {
|
||||||
log_info "Starting Qwen 3.5 4B Solo Server..."
|
log_info "Starting Qwen 3.5 4B Solo Server..."
|
||||||
|
pkill -f "llama-server" 2>/dev/null || true
|
||||||
|
sleep 1
|
||||||
local model="${MODEL:-${SCRIPT_DIR}/models/Qwen3.5/Qwen3.5-4B-Q5_K_M.gguf}"
|
local model="${MODEL:-${SCRIPT_DIR}/models/Qwen3.5/Qwen3.5-4B-Q5_K_M.gguf}"
|
||||||
local mmproj="${MMPROJ:-${SCRIPT_DIR}/models/Qwen3.5/mmproj-BF16.gguf}"
|
local mmproj="${MMPROJ:-${SCRIPT_DIR}/models/Qwen3.5/mmproj-BF16.gguf}"
|
||||||
if [ "${mmproj}" = "none" ]; then mmproj=""; fi
|
if [ "${mmproj}" = "none" ]; then mmproj=""; fi
|
||||||
|
|
@ -302,6 +302,8 @@ cmd_qwen4b() {
|
||||||
|
|
||||||
cmd_custom() {
|
cmd_custom() {
|
||||||
log_info "Starting Custom Server Instance..."
|
log_info "Starting Custom Server Instance..."
|
||||||
|
pkill -f "llama-server" 2>/dev/null || true
|
||||||
|
sleep 1
|
||||||
local model="${MODEL:-}"
|
local model="${MODEL:-}"
|
||||||
if [ -z "${model}" ] || [ ! -f "${model}" ]; then
|
if [ -z "${model}" ] || [ ! -f "${model}" ]; then
|
||||||
log_error "No valid MODEL specified! Pass MODEL=/path/to/model.gguf"
|
log_error "No valid MODEL specified! Pass MODEL=/path/to/model.gguf"
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue