增加CPP
This commit is contained in:
731
lj360_manager.sh
Executable file
731
lj360_manager.sh
Executable file
@@ -0,0 +1,731 @@
|
||||
#!/bin/bash
|
||||
|
||||
# =============================================
|
||||
# LJ360 全景监控服务管理脚本 - 增强版
|
||||
# 基于步骤化提示、彩色输出、友好交互
|
||||
# 适用于 RK3588 / Linux 本地或远程管理
|
||||
# =============================================
|
||||
|
||||
# ---------------------------------------------
|
||||
# 初始化设置
|
||||
# ---------------------------------------------
|
||||
|
||||
# 遇到错误立即退出
|
||||
set -e
|
||||
|
||||
# 颜色定义
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
CYAN='\033[0;36m'
|
||||
PURPLE='\033[0;35m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# 进度与状态打印函数
|
||||
print_header() {
|
||||
clear
|
||||
echo -e "${PURPLE}"
|
||||
echo "╔══════════════════════════════════════════════════════╗"
|
||||
echo "║ LJ360 全景监控服务管理工具 (增强版) ║"
|
||||
echo "║ RK3588 / Linux ║"
|
||||
echo "╚══════════════════════════════════════════════════════╝"
|
||||
echo -e "${NC}"
|
||||
}
|
||||
|
||||
print_step() {
|
||||
echo -e "${BLUE}[STEP $1/$2]${NC} $3"
|
||||
}
|
||||
|
||||
print_success() {
|
||||
echo -e "${GREEN}✓${NC} $1"
|
||||
}
|
||||
|
||||
print_warning() {
|
||||
echo -e "${YELLOW}⚠${NC} $1"
|
||||
}
|
||||
|
||||
print_error() {
|
||||
echo -e "${RED}✗${NC} $1"
|
||||
}
|
||||
|
||||
print_progress() {
|
||||
echo -e "${CYAN}[进度]${NC} $1"
|
||||
}
|
||||
|
||||
print_divider() {
|
||||
echo -e "${BLUE}──────────────────────────────────────────────${NC}"
|
||||
}
|
||||
|
||||
# ---------------------------------------------
|
||||
# 全局配置
|
||||
# ---------------------------------------------
|
||||
|
||||
TOTAL_STEPS=9
|
||||
STEP=1
|
||||
|
||||
SERVICE_NAME="lj360.service"
|
||||
WATCHDOG_SERVICE="lj360_watchdog.service"
|
||||
|
||||
# 获取当前用户
|
||||
CURRENT_USER=$(whoami)
|
||||
|
||||
# 检查是否以 root 运行
|
||||
if [ "$EUID" -eq 0 ]; then
|
||||
print_error "❌ 请勿使用 root 用户运行此脚本。"
|
||||
print_error "✅ 请使用以下命令运行(普通用户):"
|
||||
print_error " bash $0"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 项目目录
|
||||
PROJECT_DIR="/home/$CURRENT_USER/LJ360"
|
||||
|
||||
print_header
|
||||
print_success "🔧 当前用户: $CURRENT_USER"
|
||||
print_success "📂 项目目录: $PROJECT_DIR"
|
||||
echo ""
|
||||
|
||||
# ---------------------------------------------
|
||||
# 主菜单逻辑与步骤化功能
|
||||
# ---------------------------------------------
|
||||
|
||||
main_menu() {
|
||||
while true; do
|
||||
show_status
|
||||
|
||||
echo -e "${CYAN}🔧 请选择要执行的操作:${NC}"
|
||||
print_divider
|
||||
echo "1) 🛠️ 安装 LJ360 全景监控服务"
|
||||
echo "2) 🛡️ 安装并启动看门狗服务"
|
||||
echo "3) ▶️ 启动全景监控服务"
|
||||
echo "4) ⏹️ 停止全景监控服务"
|
||||
echo "5) 🔄 重启全景监控服务"
|
||||
echo "6) 🔔 启用开机自启"
|
||||
echo "7) 🚫 禁用开机自启"
|
||||
echo "8) 📜 查看实时日志"
|
||||
echo "9) 📊 查看系统状态"
|
||||
echo "10) 🧹 卸载 LJ360 服务"
|
||||
echo "0) 🚪 退出脚本"
|
||||
print_divider
|
||||
|
||||
read -p "👉 请输入选项 [0-10]: " choice
|
||||
|
||||
case $choice in
|
||||
1)
|
||||
STEP=1
|
||||
install_service
|
||||
;;
|
||||
2)
|
||||
STEP=1
|
||||
install_watchdog_service
|
||||
;;
|
||||
3)
|
||||
STEP=1
|
||||
start_service
|
||||
;;
|
||||
4)
|
||||
STEP=1
|
||||
stop_service
|
||||
;;
|
||||
5)
|
||||
STEP=1
|
||||
restart_service
|
||||
;;
|
||||
6)
|
||||
STEP=1
|
||||
enable_service
|
||||
;;
|
||||
7)
|
||||
STEP=1
|
||||
disable_service
|
||||
;;
|
||||
8)
|
||||
STEP=1
|
||||
view_logs
|
||||
;;
|
||||
9)
|
||||
STEP=1
|
||||
view_status
|
||||
;;
|
||||
10)
|
||||
STEP=1
|
||||
uninstall_service
|
||||
;;
|
||||
0)
|
||||
print_success "👋 再见!脚本已退出。"
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
print_error "❌ 无效选项,请重新输入 [0-10]"
|
||||
sleep 2
|
||||
;;
|
||||
esac
|
||||
done
|
||||
}
|
||||
|
||||
# ---------------------------------------------
|
||||
# 功能函数
|
||||
# ---------------------------------------------
|
||||
|
||||
show_status() {
|
||||
print_header
|
||||
|
||||
echo -e "${BLUE}【📊 当前服务状态】${NC}"
|
||||
print_divider
|
||||
|
||||
# 检查主服务状态
|
||||
if systemctl is-active --quiet $SERVICE_NAME 2>/dev/null; then
|
||||
echo -e "${GREEN}● LJ360 服务正在运行 ✅${NC}"
|
||||
else
|
||||
echo -e "${RED}● LJ360 服务未运行 ❌${NC}"
|
||||
fi
|
||||
|
||||
# 检查看门狗服务状态
|
||||
if systemctl is-active --quiet $WATCHDOG_SERVICE 2>/dev/null; then
|
||||
echo -e "${GREEN}● 看门狗服务正在运行 🛡️${NC}"
|
||||
else
|
||||
echo -e "${YELLOW}● 看门狗服务未运行 ⚠${NC}"
|
||||
fi
|
||||
|
||||
# 检查开机自启状态
|
||||
if systemctl is-enabled $SERVICE_NAME 2>/dev/null; then
|
||||
echo -e "${GREEN}● 开机自启已启用 ✅${NC}"
|
||||
else
|
||||
echo -e "${YELLOW}● 开机自启未启用 ⚠${NC}"
|
||||
fi
|
||||
|
||||
# 检查Web端口
|
||||
echo ""
|
||||
echo -e "${BLUE}【🌐 网络端口状态】${NC}"
|
||||
print_divider
|
||||
if netstat -tlnp 2>/dev/null | grep -q ":5000"; then
|
||||
echo -e "${GREEN}● Web 服务端口 5000 已监听 ✅${NC}"
|
||||
else
|
||||
echo -e "${RED}● Web 服务端口 5000 未监听 ❌${NC}"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
}
|
||||
|
||||
# --------------------------
|
||||
# Step 1: 安装服务
|
||||
# --------------------------
|
||||
install_service() {
|
||||
print_step $STEP $TOTAL_STEPS "安装 LJ360 全景监控服务"
|
||||
|
||||
# 检查项目目录是否存在
|
||||
if [ ! -d "$PROJECT_DIR" ]; then
|
||||
print_error "❌ 项目目录不存在: $PROJECT_DIR"
|
||||
print_error "请确认项目路径是否正确"
|
||||
read -p "🔘 按 Enter 继续..." -r
|
||||
return
|
||||
fi
|
||||
|
||||
# 检查web.py文件是否存在
|
||||
if [ ! -f "$PROJECT_DIR/web.py" ]; then
|
||||
print_error "❌ web.py 文件不存在: $PROJECT_DIR/web.py"
|
||||
print_error "请确认项目文件是否正确"
|
||||
read -p "🔘 按 Enter 继续..." -r
|
||||
return
|
||||
fi
|
||||
|
||||
# 创建启动脚本
|
||||
local START_SCRIPT="$PROJECT_DIR/start_lj360.sh"
|
||||
print_progress "🔧 创建启动脚本: $START_SCRIPT"
|
||||
cat > "$START_SCRIPT" << EOF
|
||||
#!/bin/bash
|
||||
# LJ360 全景监控启动脚本
|
||||
# 项目目录: $PROJECT_DIR
|
||||
|
||||
# 切换到项目目录
|
||||
cd "$PROJECT_DIR"
|
||||
|
||||
# 设置环境变量
|
||||
export DISPLAY=:0
|
||||
export XAUTHORITY=/home/$CURRENT_USER/.Xauthority
|
||||
export PYTHONPATH=$PROJECT_DIR:\$PYTHONPATH
|
||||
|
||||
# 日志文件
|
||||
LOG_FILE="$PROJECT_DIR/lj360.log"
|
||||
ERROR_LOG="$PROJECT_DIR/lj360_error.log"
|
||||
|
||||
echo "=========================================" >> "\$LOG_FILE"
|
||||
echo "LJ360 启动时间: \$(date)" >> "\$LOG_FILE"
|
||||
echo "=========================================" >> "\$LOG_FILE"
|
||||
|
||||
# 检查是否已有进程在运行
|
||||
if pgrep -f "python3 web.py" > /dev/null; then
|
||||
echo "\$(date): LJ360 应用已在运行,跳过启动" >> "\$LOG_FILE"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# 启动应用并记录输出
|
||||
echo "\$(date): 启动 LJ360 web.py..." >> "\$LOG_FILE"
|
||||
exec python3 web.py >> "\$LOG_FILE" 2>> "\$ERROR_LOG"
|
||||
EOF
|
||||
|
||||
chmod +x "$START_SCRIPT"
|
||||
chown "$CURRENT_USER:$CURRENT_USER" "$START_SCRIPT"
|
||||
print_success "✅ 启动脚本已创建并授权"
|
||||
|
||||
# 创建 systemd 服务
|
||||
print_progress "🔧 创建 systemd 服务文件: /etc/systemd/system/$SERVICE_NAME"
|
||||
sudo tee /etc/systemd/system/$SERVICE_NAME > /dev/null << EOF
|
||||
[Unit]
|
||||
Description=LJ360 Surround View Service
|
||||
After=network.target graphical.target
|
||||
Wants=network.target graphical.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=$CURRENT_USER
|
||||
WorkingDirectory=$PROJECT_DIR
|
||||
Environment="DISPLAY=:0"
|
||||
Environment="XAUTHORITY=/home/$CURRENT_USER/.Xauthority"
|
||||
Environment="PYTHONPATH=$PROJECT_DIR"
|
||||
Environment="XDG_RUNTIME_DIR=/run/user/1000"
|
||||
ExecStart=$PROJECT_DIR/start_lj360.sh
|
||||
Restart=always
|
||||
RestartSec=5
|
||||
StandardOutput=journal
|
||||
StandardError=journal
|
||||
|
||||
# 限制资源使用(可选)
|
||||
# MemoryMax=1G
|
||||
# CPUQuota=80%
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
|
||||
sudo systemctl daemon-reload
|
||||
print_success "✅ systemd 服务文件已部署 & 缓存已刷新"
|
||||
|
||||
STEP=$((STEP + 1))
|
||||
read -p "🔘 按 Enter 继续..." -r
|
||||
}
|
||||
|
||||
# --------------------------
|
||||
# Step 2: 安装看门狗服务
|
||||
# --------------------------
|
||||
install_watchdog_service() {
|
||||
print_step $STEP $TOTAL_STEPS "安装并启动看门狗服务"
|
||||
|
||||
# 创建看门狗脚本
|
||||
local WATCHDOG_SCRIPT="$PROJECT_DIR/watchdog_lj360.sh"
|
||||
print_progress "🔧 创建看门狗脚本: $WATCHDOG_SCRIPT"
|
||||
cat > "$WATCHDOG_SCRIPT" << EOF
|
||||
#!/bin/bash
|
||||
# LJ360 看门狗服务脚本
|
||||
# 项目目录: $PROJECT_DIR
|
||||
|
||||
APP_NAME="web.py"
|
||||
CHECK_INTERVAL=10
|
||||
LOG_FILE="$PROJECT_DIR/watchdog.log"
|
||||
|
||||
echo "=========================================" >> "\$LOG_FILE"
|
||||
echo "看门狗服务启动时间: \$(date)" >> "\$LOG_FILE"
|
||||
echo "=========================================" >> "\$LOG_FILE"
|
||||
|
||||
while true; do
|
||||
# 检查主服务进程是否存在
|
||||
if ! pgrep -f "python3 \$APP_NAME" > /dev/null; then
|
||||
echo "\$(date): 检测到 LJ360 未运行,正在启动..." >> "\$LOG_FILE"
|
||||
|
||||
cd "$PROJECT_DIR"
|
||||
|
||||
# 设置环境变量
|
||||
export DISPLAY=:0
|
||||
export XAUTHORITY=/home/$CURRENT_USER/.Xauthority
|
||||
export PYTHONPATH=$PROJECT_DIR:\$PYTHONPATH
|
||||
|
||||
# 启动应用
|
||||
nohup python3 web.py >> "$PROJECT_DIR/lj360.log" 2>> "$PROJECT_DIR/lj360_error.log" &
|
||||
|
||||
echo "\$(date): 已启动 LJ360,PID: \$!" >> "\$LOG_FILE"
|
||||
|
||||
# 等待应用启动
|
||||
sleep 5
|
||||
fi
|
||||
|
||||
sleep \$CHECK_INTERVAL
|
||||
done
|
||||
EOF
|
||||
|
||||
chmod +x "$WATCHDOG_SCRIPT"
|
||||
chown "$CURRENT_USER:$CURRENT_USER" "$WATCHDOG_SCRIPT"
|
||||
print_success "✅ 看门狗脚本已创建并授权"
|
||||
|
||||
# 创建看门狗 systemd 服务
|
||||
print_progress "🔧 创建看门狗服务文件: /etc/systemd/system/$WATCHDOG_SERVICE"
|
||||
sudo tee /etc/systemd/system/$WATCHDOG_SERVICE > /dev/null << EOF
|
||||
[Unit]
|
||||
Description=LJ360 Watchdog Service
|
||||
After=network.target
|
||||
Wants=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=$CURRENT_USER
|
||||
WorkingDirectory=$PROJECT_DIR
|
||||
ExecStart=$PROJECT_DIR/watchdog_lj360.sh
|
||||
Restart=always
|
||||
RestartSec=10
|
||||
StandardOutput=journal
|
||||
StandardError=journal
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
|
||||
sudo systemctl daemon-reload
|
||||
print_success "✅ 看门狗服务文件已部署"
|
||||
|
||||
# 启用并启动看门狗服务
|
||||
print_progress "🚀 启动看门狗服务"
|
||||
sudo systemctl enable $WATCHDOG_SERVICE
|
||||
sudo systemctl start $WATCHDOG_SERVICE
|
||||
sleep 2
|
||||
|
||||
if systemctl is-active --quiet $WATCHDOG_SERVICE; then
|
||||
print_success "✅ 看门狗服务启动成功"
|
||||
else
|
||||
print_warning "⚠️ 看门狗服务启动可能有问题,请查看日志"
|
||||
fi
|
||||
|
||||
STEP=$((STEP + 1))
|
||||
read -p "🔘 按 Enter 继续..." -r
|
||||
}
|
||||
|
||||
# --------------------------
|
||||
# Step 3: 启动服务
|
||||
# --------------------------
|
||||
start_service() {
|
||||
print_step $STEP $TOTAL_STEPS "启动 LJ360 全景监控服务"
|
||||
|
||||
# 检查服务文件是否存在
|
||||
if [ ! -f "/etc/systemd/system/$SERVICE_NAME" ]; then
|
||||
print_error "❌ 服务未安装,请先安装服务"
|
||||
read -p "🔘 按 Enter 继续..." -r
|
||||
return
|
||||
fi
|
||||
|
||||
print_progress "🚀 正在启动服务: $SERVICE_NAME"
|
||||
sudo systemctl start "$SERVICE_NAME"
|
||||
sleep 3
|
||||
|
||||
# 检查启动状态
|
||||
if systemctl is-active --quiet "$SERVICE_NAME"; then
|
||||
print_success "✅ 服务启动成功"
|
||||
|
||||
# 检查Web端口
|
||||
sleep 2
|
||||
if netstat -tlnp 2>/dev/null | grep -q ":5000"; then
|
||||
local IP_ADDR=$(hostname -I | awk '{print $1}')
|
||||
print_success "🌐 Web 服务已启动: http://$IP_ADDR:5000"
|
||||
print_success "🌐 本地访问: http://localhost:5000"
|
||||
fi
|
||||
else
|
||||
print_warning "⚠️ 服务启动可能有问题,请查看日志"
|
||||
fi
|
||||
|
||||
STEP=$((STEP + 1))
|
||||
read -p "🔘 按 Enter 继续..." -r
|
||||
}
|
||||
|
||||
# --------------------------
|
||||
# Step 4: 停止服务
|
||||
# --------------------------
|
||||
stop_service() {
|
||||
print_step $STEP $TOTAL_STEPS "停止 LJ360 全景监控服务"
|
||||
|
||||
# 检查服务文件是否存在
|
||||
if [ ! -f "/etc/systemd/system/$SERVICE_NAME" ]; then
|
||||
print_error "❌ 服务未安装,请先安装服务"
|
||||
read -p "🔘 按 Enter 继续..." -r
|
||||
return
|
||||
fi
|
||||
|
||||
print_progress "⏹️ 正在停止服务: $SERVICE_NAME"
|
||||
sudo systemctl stop "$SERVICE_NAME"
|
||||
sleep 2
|
||||
|
||||
# 清理可能的残留进程
|
||||
print_progress "🧹 清理残留进程..."
|
||||
pkill -f "python3 web.py" 2>/dev/null || true
|
||||
|
||||
# 检查停止状态
|
||||
if ! systemctl is-active --quiet "$SERVICE_NAME"; then
|
||||
print_success "✅ 服务停止成功"
|
||||
else
|
||||
print_warning "⚠️ 服务停止可能有问题"
|
||||
fi
|
||||
|
||||
STEP=$((STEP + 1))
|
||||
read -p "🔘 按 Enter 继续..." -r
|
||||
}
|
||||
|
||||
# --------------------------
|
||||
# Step 5: 重启服务
|
||||
# --------------------------
|
||||
restart_service() {
|
||||
print_step $STEP $TOTAL_STEPS "重启 LJ360 全景监控服务"
|
||||
|
||||
# 检查服务文件是否存在
|
||||
if [ ! -f "/etc/systemd/system/$SERVICE_NAME" ]; then
|
||||
print_error "❌ 服务未安装,请先安装服务"
|
||||
read -p "🔘 按 Enter 继续..." -r
|
||||
return
|
||||
fi
|
||||
|
||||
print_progress "🔄 正在重启服务: $SERVICE_NAME"
|
||||
sudo systemctl restart "$SERVICE_NAME"
|
||||
sleep 3
|
||||
|
||||
# 检查重启状态
|
||||
if systemctl is-active --quiet "$SERVICE_NAME"; then
|
||||
print_success "✅ 服务重启成功"
|
||||
|
||||
# 检查Web端口
|
||||
sleep 2
|
||||
if netstat -tlnp 2>/dev/null | grep -q ":5000"; then
|
||||
local IP_ADDR=$(hostname -I | awk '{print $1}')
|
||||
print_success "🌐 Web 服务已重启: http://$IP_ADDR:5000"
|
||||
fi
|
||||
else
|
||||
print_warning "⚠️ 服务重启可能有问题,请查看日志"
|
||||
fi
|
||||
|
||||
STEP=$((STEP + 1))
|
||||
read -p "🔘 按 Enter 继续..." -r
|
||||
}
|
||||
|
||||
# --------------------------
|
||||
# Step 6: 启用开机自启
|
||||
# --------------------------
|
||||
enable_service() {
|
||||
print_step $STEP $TOTAL_STEPS "启用开机自启"
|
||||
|
||||
# 检查服务文件是否存在
|
||||
if [ ! -f "/etc/systemd/system/$SERVICE_NAME" ]; then
|
||||
print_error "❌ 服务未安装,请先安装服务"
|
||||
read -p "🔘 按 Enter 继续..." -r
|
||||
return
|
||||
fi
|
||||
|
||||
print_progress "🔔 正在启用开机自启: $SERVICE_NAME"
|
||||
sudo systemctl enable "$SERVICE_NAME"
|
||||
sleep 1
|
||||
|
||||
if systemctl is-enabled "$SERVICE_NAME"; then
|
||||
print_success "✅ 开机自启已启用"
|
||||
else
|
||||
print_error "❌ 开机自启启用失败"
|
||||
fi
|
||||
|
||||
STEP=$((STEP + 1))
|
||||
read -p "🔘 按 Enter 继续..." -r
|
||||
}
|
||||
|
||||
# --------------------------
|
||||
# Step 7: 禁用开机自启
|
||||
# --------------------------
|
||||
disable_service() {
|
||||
print_step $STEP $TOTAL_STEPS "禁用开机自启"
|
||||
|
||||
# 检查服务文件是否存在
|
||||
if [ ! -f "/etc/systemd/system/$SERVICE_NAME" ]; then
|
||||
print_error "❌ 服务未安装,请先安装服务"
|
||||
read -p "🔘 按 Enter 继续..." -r
|
||||
return
|
||||
fi
|
||||
|
||||
print_progress "🚫 正在禁用开机自启: $SERVICE_NAME"
|
||||
sudo systemctl disable "$SERVICE_NAME"
|
||||
sleep 1
|
||||
|
||||
if ! systemctl is-enabled "$SERVICE_NAME"; then
|
||||
print_success "✅ 开机自启已禁用"
|
||||
else
|
||||
print_error "❌ 开机自启禁用失败"
|
||||
fi
|
||||
|
||||
STEP=$((STEP + 1))
|
||||
read -p "🔘 按 Enter 继续..." -r
|
||||
}
|
||||
|
||||
# --------------------------
|
||||
# Step 8: 查看日志
|
||||
# --------------------------
|
||||
view_logs() {
|
||||
print_step $STEP $TOTAL_STEPS "查看实时日志"
|
||||
|
||||
# 检查服务文件是否存在
|
||||
if [ ! -f "/etc/systemd/system/$SERVICE_NAME" ]; then
|
||||
print_error "❌ 服务未安装,请先安装服务"
|
||||
read -p "🔘 按 Enter 继续..." -r
|
||||
return
|
||||
fi
|
||||
|
||||
print_progress "📜 请选择要查看的日志类型:"
|
||||
echo "1) 📋 查看 systemd 服务日志"
|
||||
echo "2) 📄 查看应用日志文件"
|
||||
echo "3) ⚠️ 查看错误日志文件"
|
||||
echo "4) 🛡️ 查看看门狗日志"
|
||||
print_divider
|
||||
|
||||
read -p "👉 请选择 [1-4]: " log_choice
|
||||
|
||||
case $log_choice in
|
||||
1)
|
||||
print_progress "📜 正在打开 systemd 服务日志(按 Ctrl+C 退出)"
|
||||
echo ""
|
||||
sudo journalctl -u "$SERVICE_NAME" -f
|
||||
;;
|
||||
2)
|
||||
print_progress "📄 正在查看应用日志文件: $PROJECT_DIR/lj360.log"
|
||||
echo ""
|
||||
if [ -f "$PROJECT_DIR/lj360.log" ]; then
|
||||
tail -50 "$PROJECT_DIR/lj360.log"
|
||||
echo ""
|
||||
echo "按 Enter 查看更多,或按 Ctrl+C 退出..."
|
||||
tail -f "$PROJECT_DIR/lj360.log"
|
||||
else
|
||||
print_error "❌ 日志文件不存在"
|
||||
fi
|
||||
;;
|
||||
3)
|
||||
print_progress "⚠️ 正在查看错误日志文件: $PROJECT_DIR/lj360_error.log"
|
||||
echo ""
|
||||
if [ -f "$PROJECT_DIR/lj360_error.log" ]; then
|
||||
tail -50 "$PROJECT_DIR/lj360_error.log"
|
||||
else
|
||||
print_warning "⚠️ 错误日志文件不存在"
|
||||
fi
|
||||
;;
|
||||
4)
|
||||
print_progress "🛡️ 正在查看看门狗日志文件: $PROJECT_DIR/watchdog.log"
|
||||
echo ""
|
||||
if [ -f "$PROJECT_DIR/watchdog.log" ]; then
|
||||
tail -50 "$PROJECT_DIR/watchdog.log"
|
||||
else
|
||||
print_warning "⚠️ 看门狗日志文件不存在"
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
print_error "❌ 无效选项"
|
||||
;;
|
||||
esac
|
||||
|
||||
STEP=$((STEP + 1))
|
||||
read -p "🔘 日志查看结束,按 Enter 继续..." -r
|
||||
}
|
||||
|
||||
# --------------------------
|
||||
# Step 9: 查看系统状态
|
||||
# --------------------------
|
||||
view_status() {
|
||||
print_step $STEP $TOTAL_STEPS "查看详细系统状态"
|
||||
|
||||
echo -e "${CYAN}【📊 系统资源状态】${NC}"
|
||||
print_divider
|
||||
|
||||
# CPU使用率
|
||||
echo -e "${BLUE}● CPU 使用率:${NC}"
|
||||
top -bn1 | grep "Cpu(s)" | awk '{print " " $2 "% user, " $4 "% system, " $8 "% idle"}'
|
||||
|
||||
# 内存使用
|
||||
echo -e "${BLUE}● 内存使用:${NC}"
|
||||
free -h | awk '/^Mem:/ {print " " $3 " / " $2 " (" $3/$2*100 "%) used"}'
|
||||
|
||||
# 磁盘空间
|
||||
echo -e "${BLUE}● 磁盘空间:${NC}"
|
||||
df -h /home | awk 'NR==2 {print " " $3 " / " $2 " (" $5 ") used"}'
|
||||
|
||||
echo ""
|
||||
echo -e "${CYAN}【🔍 进程状态】${NC}"
|
||||
print_divider
|
||||
|
||||
# LJ360相关进程
|
||||
if pgrep -f "python3 web.py" > /dev/null; then
|
||||
echo -e "${GREEN}● LJ360 进程正在运行 ✅${NC}"
|
||||
ps aux | grep "python3 web.py" | grep -v grep | awk '{print " PID: " $2 ", CPU: " $3 "%, MEM: " $4 "%, CMD: " $11}'
|
||||
else
|
||||
echo -e "${RED}● LJ360 进程未运行 ❌${NC}"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo -e "${CYAN}【📈 服务运行时间】${NC}"
|
||||
print_divider
|
||||
|
||||
if systemctl is-active --quiet $SERVICE_NAME; then
|
||||
UPTIME=$(systemctl show $SERVICE_NAME --property=ActiveEnterTimestamp | awk -F= '{print $2}')
|
||||
echo -e "${GREEN}● 服务启动时间: $UPTIME${NC}"
|
||||
fi
|
||||
|
||||
if systemctl is-active --quiet $WATCHDOG_SERVICE; then
|
||||
WATCHDOG_UPTIME=$(systemctl show $WATCHDOG_SERVICE --property=ActiveEnterTimestamp | awk -F= '{print $2}')
|
||||
echo -e "${GREEN}● 看门狗启动时间: $WATCHDOG_UPTIME${NC}"
|
||||
fi
|
||||
|
||||
STEP=$((STEP + 1))
|
||||
read -p "🔘 按 Enter 继续..." -r
|
||||
}
|
||||
|
||||
# --------------------------
|
||||
# Step 10: 卸载服务
|
||||
# --------------------------
|
||||
uninstall_service() {
|
||||
print_step $STEP $TOTAL_STEPS "卸载 LJ360 全景监控服务"
|
||||
echo -e "${RED}⚠ 警告:此操作将卸载 LJ360 全景监控服务!${NC}"
|
||||
echo -n "✅ 确定要卸载吗?(y/N): "
|
||||
read -r confirm
|
||||
if [[ $confirm =~ ^[Yy]$ ]]; then
|
||||
print_progress "⏹️ 停止服务..."
|
||||
sudo systemctl stop "$SERVICE_NAME" 2>/dev/null || true
|
||||
sudo systemctl stop "$WATCHDOG_SERVICE" 2>/dev/null || true
|
||||
|
||||
print_progress "🚫 禁用开机自启..."
|
||||
sudo systemctl disable "$SERVICE_NAME" 2>/dev/null || true
|
||||
sudo systemctl disable "$WATCHDOG_SERVICE" 2>/dev/null || true
|
||||
|
||||
print_progress "🗑️ 删除 systemd 服务文件..."
|
||||
sudo rm -f /etc/systemd/system/"$SERVICE_NAME"
|
||||
sudo rm -f /etc/systemd/system/"$WATCHDOG_SERVICE"
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl reset-failed
|
||||
|
||||
print_progress "🗑️ 删除启动脚本..."
|
||||
rm -f "$PROJECT_DIR/start_lj360.sh"
|
||||
rm -f "$PROJECT_DIR/watchdog_lj360.sh"
|
||||
|
||||
print_progress "🔪 清理进程..."
|
||||
pkill -f "python3 web.py" 2>/dev/null || true
|
||||
pkill -f "watchdog_lj360.sh" 2>/dev/null || true
|
||||
|
||||
print_success "✅ LJ360 全景监控服务卸载完成"
|
||||
print_warning "📝 日志文件保留在: $PROJECT_DIR/"
|
||||
print_warning " - lj360.log"
|
||||
print_warning " - lj360_error.log"
|
||||
print_warning " - watchdog.log"
|
||||
else
|
||||
print_warning "❌ 取消卸载操作"
|
||||
fi
|
||||
|
||||
STEP=$((STEP + 1))
|
||||
read -p "🔘 按 Enter 继续..." -r
|
||||
}
|
||||
|
||||
# ---------------------------------------------
|
||||
# 启动主菜单
|
||||
# ---------------------------------------------
|
||||
|
||||
# 检查是否在正确的目录运行
|
||||
if [ ! -d "$PROJECT_DIR" ]; then
|
||||
print_error "❌ 项目目录不存在: $PROJECT_DIR"
|
||||
print_error "请确认项目路径是否正确,或者修改脚本中的 PROJECT_DIR 变量"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
main_menu
|
||||
Reference in New Issue
Block a user