fix(llm-runner): terminate existing instances using fuser -k and pkill before launching

This commit is contained in:
Noel Bautista 2026-10-21 13:56:55 -07:00
parent 954b6728e8
commit 8af11cc8ef
No known key found for this signature in database

View file

@ -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"