18cefa6ded
1. start.sh BASE_DIR 不再硬编码 /root/ipam,改为跟随脚本所在目录 (BASH_SOURCE 自动检测),无论部署在 /opt /usr/local /root 等 任意目录都能工作。 2. 运行 start.sh 时自动生成 3 个 systemd 单元并 enable 开机自启: - ipam-backend (uvicorn :8008) - ipam-celery-worker - ipam-celery-beat (每60秒触发SNMP设备自动轮询) 均含 Restart=always 崩溃自动重启,日志写入 /var/log/ipam/。 3. 前端 vite dev server 保持 nohup 启动(不纳入 systemd)。 4. stop.sh 改为 systemctl stop 停止 systemd 服务,pkill 兜底。 5. .gitignore 忽略 celerybeat-schedule 运行期文件。
76 lines
2.2 KiB
Bash
Executable File
76 lines
2.2 KiB
Bash
Executable File
#!/bin/bash
|
||
# IPAM 管理系统停止脚本
|
||
#
|
||
# 通过 systemd 停止后端与 Celery(若服务已接入 systemd),
|
||
# 并停止前端 dev server。
|
||
|
||
echo "=========================================="
|
||
echo " IPAM 管理系统停止脚本"
|
||
echo "=========================================="
|
||
echo ""
|
||
|
||
# 颜色定义
|
||
RED='\033[0;31m'
|
||
GREEN='\033[0;32m'
|
||
YELLOW='\033[1;33m'
|
||
NC='\033[0m' # No Color
|
||
|
||
# 目录自适应(跟随本脚本所在目录)
|
||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||
BASE_DIR="$SCRIPT_DIR"
|
||
|
||
# systemd 服务名(与 start.sh 保持一致)
|
||
SYSTEMD_BACKEND="ipam-backend"
|
||
SYSTEMD_CELERY_WORKER="ipam-celery-worker"
|
||
SYSTEMD_CELERY_BEAT="ipam-celery-beat"
|
||
|
||
echo "🛑 正在停止所有服务..."
|
||
echo ""
|
||
|
||
# 停止 Celery Beat
|
||
echo "停止 Celery Beat..."
|
||
if systemctl stop $SYSTEMD_CELERY_BEAT 2>/dev/null; then
|
||
echo -e "${GREEN}✅ Celery Beat 已停止 (systemd)${NC}"
|
||
else
|
||
pkill -f "celery.*app.tasks.celery_app.*beat" 2>/dev/null
|
||
echo -e "${YELLOW}ℹ️ Celery Beat 已停止 (pkill 兜底)${NC}"
|
||
fi
|
||
|
||
# 停止 Celery Worker
|
||
echo ""
|
||
echo "停止 Celery Worker..."
|
||
if systemctl stop $SYSTEMD_CELERY_WORKER 2>/dev/null; then
|
||
echo -e "${GREEN}✅ Celery Worker 已停止 (systemd)${NC}"
|
||
else
|
||
pkill -f "celery.*app.tasks.celery_app" 2>/dev/null
|
||
echo -e "${YELLOW}ℹ️ Celery Worker 已停止 (pkill 兜底)${NC}"
|
||
fi
|
||
|
||
# 停止后端
|
||
echo ""
|
||
echo "停止后端 API 服务..."
|
||
if systemctl stop $SYSTEMD_BACKEND 2>/dev/null; then
|
||
echo -e "${GREEN}✅ 后端已停止 (systemd)${NC}"
|
||
else
|
||
pkill -f "uvicorn app.main:app" 2>/dev/null
|
||
echo -e "${YELLOW}ℹ️ 后端已停止 (pkill 兜底)${NC}"
|
||
fi
|
||
|
||
# 停止前端
|
||
echo ""
|
||
echo "停止前端服务..."
|
||
pkill -f "vite" 2>/dev/null
|
||
echo -e "${GREEN}✅ 前端服务已停止${NC}"
|
||
|
||
echo ""
|
||
echo "=========================================="
|
||
echo " 所有服务已停止"
|
||
echo "=========================================="
|
||
echo ""
|
||
echo "📋 剩余进程检查:"
|
||
ps aux | grep -E "(uvicorn|celery|vite)" | grep -v grep | awk '{print $2, $11}'
|
||
echo ""
|
||
echo "💡 若希望永久停止开机自启,可执行:"
|
||
echo " systemctl disable $SYSTEMD_BACKEND $SYSTEMD_CELERY_WORKER $SYSTEMD_CELERY_BEAT"
|
||
echo ""
|