| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- #!/bin/bash
- # DSH 双摄系统服务管理脚本
- # 用法: ./service.sh start|stop|restart|status
- SERVICE_NAME="dsh-dual-camera"
- PROJECT_DIR="/home/admin/dsh/dual_camera_system"
- PID_FILE="/tmp/${SERVICE_NAME}.pid"
- LOG_FILE="${PROJECT_DIR}/logs/${SERVICE_NAME}.log"
- # 激活 conda 环境
- source /home/admin/miniconda3/etc/profile.d/conda.sh
- conda activate rknn
- # 确保日志目录存在
- mkdir -p "${PROJECT_DIR}/logs"
- # 创建日志文件(如果不存在)
- touch "$LOG_FILE"
- start() {
- if [ -f "$PID_FILE" ]; then
- PID=$(cat "$PID_FILE")
- if ps -p "$PID" > /dev/null 2>&1; then
- echo "服务已在运行中 (PID: $PID)"
- return 1
- fi
- rm -f "$PID_FILE"
- fi
- echo "启动 DSH 双摄系统服务..."
- cd "$PROJECT_DIR"
- nohup python main.py --host 0.0.0.0 --port 8000 > "$LOG_FILE" 2>&1 &
- echo $! > "$PID_FILE"
- sleep 2
- if ps -p $(cat "$PID_FILE") > /dev/null 2>&1; then
- echo "服务已启动 (PID: $(cat $PID_FILE))"
- else
- echo "服务启动失败,请检查日志: $LOG_FILE"
- rm -f "$PID_FILE"
- return 1
- fi
- }
- stop() {
- if [ ! -f "$PID_FILE" ]; then
- echo "服务未运行"
- return 0
- fi
- PID=$(cat "$PID_FILE")
- if ! ps -p "$PID" > /dev/null 2>&1; then
- echo "服务未运行 ( stale PID file: $PID )"
- rm -f "$PID_FILE"
- return 0
- fi
- echo "停止服务 (PID: $PID)..."
- kill "$PID"
- # 等待进程结束
- for i in {1..10}; do
- if ! ps -p "$PID" > /dev/null 2>&1; then
- echo "服务已停止"
- rm -f "$PID_FILE"
- return 0
- fi
- sleep 1
- done
- # 强制杀死
- echo "强制终止进程..."
- kill -9 "$PID" 2>/dev/null
- rm -f "$PID_FILE"
- echo "服务已停止"
- }
- restart() {
- stop
- sleep 2
- start
- }
- status() {
- if [ ! -f "$PID_FILE" ]; then
- echo "服务状态: 未运行"
- return 0
- fi
- PID=$(cat "$PID_FILE")
- if ps -p "$PID" > /dev/null 2>&1; then
- echo "服务状态: 运行中 (PID: $PID)"
- return 0
- else
- echo "服务状态: 未运行 (stale PID file)"
- rm -f "$PID_FILE"
- return 1
- fi
- }
- case "$1" in
- start)
- start
- ;;
- stop)
- stop
- ;;
- restart)
- restart
- ;;
- status)
- status
- ;;
- *)
- echo "用法: $0 {start|stop|restart|status}"
- exit 1
- ;;
- esac
- exit 0
|