#!/bin/bash # RK3588 Media Server 运维脚本 # 安装后位于 /opt/rk3588-media-server/script/ops.sh # # 用法: sudo ./ops.sh [status|start|stop|restart|logs|hw|ddr-status|ddr-performance|ddr-ondemand|ddr-restore] set -e RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' CYAN='\033[0;36m' NC='\033[0m' # 服务名称 MEDIA_SERVICE="media-server" AGENT_SERVICE="rk3588-agent" cmd_status() { echo -e "${BLUE}========== RK3588 Media Server 状态 ==========${NC}" echo "" # 系统信息 echo -e "${CYAN}[系统信息]${NC}" echo " 时间: $(date '+%Y-%m-%d %H:%M:%S')" echo " 运行时间: $(uptime -p 2>/dev/null || uptime | awk -F',' '{print $1}')" echo "" # NPU echo -e "${CYAN}[NPU 负载]${NC}" if [ -f /proc/rknpu/load ]; then cat /proc/rknpu/load | sed 's/^/ /' else echo " NPU 信息不可用" fi echo "" # Media Server echo -e "${CYAN}[Media Server]${NC}" if systemctl is-active --quiet $MEDIA_SERVICE 2>/dev/null; then echo -e " 状态: ${GREEN}● 运行中${NC}" PID=$(systemctl show --property=MainPID --value $MEDIA_SERVICE 2>/dev/null) echo " PID: $PID" if [ -n "$PID" ] && [ "$PID" != "0" ]; then CPU_MEM=$(ps -p $PID -o %cpu,%mem --no-headers 2>/dev/null || echo "N/A") echo " CPU/MEM: $CPU_MEM" fi echo " 端口:" ss -tlnp 2>/dev/null | grep -E "(9000|8555)" | head -3 | sed 's/^/ /' else echo -e " 状态: ${RED}○ 停止${NC}" fi echo "" # Agent echo -e "${CYAN}[RK3588 Agent]${NC}" if systemctl is-active --quiet $AGENT_SERVICE 2>/dev/null; then echo -e " 状态: ${GREEN}● 运行中${NC}" echo " 管理界面: http://$(hostname -I | awk '{print $1}'):9100" else echo -e " 状态: ${RED}○ 停止${NC}" fi echo "" # HLS 输出 echo -e "${CYAN}[HLS 输出]${NC}" if [ -d "/var/lib/rk3588-media-server/hls" ]; then CHANNELS=$(find "/var/lib/rk3588-media-server/hls" -maxdepth 1 -type d 2>/dev/null | wc -l) CHANNELS=$((CHANNELS - 1)) echo " 通道数: $CHANNELS" fi echo "" # 存储使用 echo -e "${CYAN}[存储使用]${NC}" echo " HLS: $(du -sh /var/lib/rk3588-media-server/hls 2>/dev/null | cut -f1)" echo " 日志: $(du -sh /var/lib/rk3588-media-server/logs 2>/dev/null | cut -f1)" echo "" echo "命令帮助:" echo " $(basename $0) status - 查看状态" echo " $(basename $0) start - 启动服务" echo " $(basename $0) stop - 停止服务" echo " $(basename $0) logs - 查看日志" echo " $(basename $0) hw - 硬件监控" } cmd_start() { echo -e "${YELLOW}启动服务...${NC}" systemctl start $MEDIA_SERVICE systemctl start $AGENT_SERVICE echo -e "${GREEN}✓${NC} 服务已启动" echo " 管理界面: http://$(hostname -I | awk '{print $1}'):9100" } cmd_stop() { echo -e "${YELLOW}停止服务...${NC}" systemctl stop $AGENT_SERVICE systemctl stop $MEDIA_SERVICE echo -e "${GREEN}✓${NC} 服务已停止" } cmd_restart() { echo -e "${YELLOW}重启服务...${NC}" systemctl restart $MEDIA_SERVICE systemctl restart $AGENT_SERVICE echo -e "${GREEN}✓${NC} 服务已重启" } cmd_logs() { echo -e "${CYAN}查看日志 (按 Ctrl+C 退出)...${NC}" echo "" journalctl -u $MEDIA_SERVICE -f } cmd_metrics() { /opt/rk3588-media-server/scripts/monitor_hw.sh } cmd_ddr_status() { bash /opt/rk3588-media-server/scripts/ddr_mode.sh status } cmd_ddr_performance() { bash /opt/rk3588-media-server/scripts/ddr_mode.sh performance } cmd_ddr_ondemand() { bash /opt/rk3588-media-server/scripts/ddr_mode.sh ondemand } cmd_ddr_restore() { bash /opt/rk3588-media-server/scripts/ddr_mode.sh restore } # 主入口 case "${1:-status}" in status) cmd_status ;; start) cmd_start ;; stop) cmd_stop ;; restart) cmd_restart ;; logs) cmd_logs ;; hw) cmd_metrics ;; ddr-status) cmd_ddr_status ;; ddr-performance) cmd_ddr_performance ;; ddr-ondemand) cmd_ddr_ondemand ;; ddr-restore) cmd_ddr_restore ;; *) echo "RK3588 Media Server 运维脚本" echo "" echo "用法: sudo $(basename $0) [命令]" echo "" echo "命令:" echo " status 查看运行状态 (默认)" echo " start 启动服务" echo " stop 停止服务" echo " restart 重启服务" echo " logs 查看实时日志" echo " hw 查看硬件监控" echo " ddr-status 查看 DDR 频率策略" echo " ddr-performance DDR 切到高性能模式" echo " ddr-ondemand DDR 切回 dmc_ondemand" echo " ddr-restore 恢复上次保存的 DDR 配置" echo "" echo "示例:" echo " sudo $(basename $0) status" echo " sudo $(basename $0) logs" ;; esac