start.sh与stop.sh脚本详解:DAMO-YOLO手机检测服务自动化管理

发布时间:2026/7/12 20:12:08

start.sh与stop.sh脚本详解:DAMO-YOLO手机检测服务自动化管理 start.sh与stop.sh脚本详解DAMO-YOLO手机检测服务自动化管理1. 项目概述今天我们来深入解析一个实用工具——基于DAMO-YOLO的手机检测服务的自动化管理脚本。如果你正在使用这个实时手机检测系统那么start.sh和stop.sh就是你最得力的助手。这个系统采用了阿里巴巴达摩院开发的DAMO-YOLO模型结合TinyNAS技术专门为手机端低算力、低功耗场景优化。简单来说就是小、快、省——模型体积小、检测速度快、资源消耗省。1.1 为什么需要自动化脚本想象一下每次启动服务都要手动输入一堆命令停止服务又要一个个关闭进程既麻烦又容易出错。start.sh和stop.sh脚本就是为了解决这个问题而生的一键启动复杂的环境准备和服务启动流程自动化一键停止安全地关闭所有相关进程避免资源残留状态管理实时监控服务运行状态出现问题及时处理日志记录详细记录运行日志方便排查问题2. 脚本功能详解2.1 start.sh启动脚本解析start.sh脚本是整个服务的启动引擎它负责完成以下关键任务#!/bin/bash # 设置环境变量 export PYTHONPATH/root/phone-detection:$PYTHONPATH export MODEL_PATH/root/phone-detection/models/damo-yolo-s # 检查依赖是否安装 if ! pip show modelscope /dev/null 21; then echo 安装缺失依赖... pip install -r /root/phone-detection/requirements.txt fi # 创建日志目录 mkdir -p /root/phone-detection/logs # 启动服务 cd /root/phone-detection nohup python app.py --port 7860 --host 0.0.0.0 logs/access.log 2 logs/error.log # 记录进程ID echo $! /tmp/phone-detection.pid echo 服务启动成功进程ID: $! echo 访问地址: http://服务器IP:7860脚本核心功能说明环境准备设置Python路径和模型路径确保程序能找到所有需要的文件依赖检查自动检查并安装缺失的Python包避免因依赖问题导致启动失败日志管理创建日志目录确保日志文件有地方存储服务启动使用nohup在后台启动服务并将输出重定向到日志文件进程管理保存进程ID到临时文件方便后续管理2.2 stop.sh停止脚本解析stop.sh脚本负责安全地停止服务确保不会留下僵尸进程或资源泄漏#!/bin/bash # 检查进程文件是否存在 if [ ! -f /tmp/phone-detection.pid ]; then echo 未找到进程文件服务可能未启动 exit 1 fi # 读取进程ID PID$(cat /tmp/phone-detection.pid) # 检查进程是否在运行 if ps -p $PID /dev/null 21; then echo 正在停止服务 (进程ID: $PID)... kill -TERM $PID # 等待进程结束 sleep 3 # 检查是否成功停止 if ps -p $PID /dev/null 21; then echo 正常停止失败尝试强制停止... kill -KILL $PID fi # 清理进程文件 rm -f /tmp/phone-detection.pid echo 服务已停止 else echo 进程 $PID 未运行清理残留文件 rm -f /tmp/phone-detection.pid fi # 额外清理可能存在的残留进程 pkill -f python app.py 2/dev/null安全停止机制优雅停止首先发送TERM信号让程序有机会完成当前处理并清理资源强制停止如果优雅停止失败使用KILL信号强制终止彻底清理清理进程文件并额外检查是否有残留进程状态验证每一步都验证操作结果确保真正停止成功3. 实际使用指南3.1 脚本使用方法启动服务# 进入脚本目录 cd /root/phone-detection # 添加执行权限首次使用需要 chmod x start.sh stop.sh # 启动服务 ./start.sh停止服务# 停止服务 ./stop.sh # 查看停止状态 echo $? # 返回0表示成功非0表示失败检查服务状态# 检查进程是否在运行 ps aux | grep python app.py # 查看服务日志 tail -f /root/phone-detection/logs/access.log3.2 自动化部署示例在实际生产环境中你可能会需要更复杂的自动化管理。这里提供一个增强版的启动脚本示例#!/bin/bash # 增强版启动脚本 CONFIG_FILE/root/phone-detection/config.ini LOG_DIR/root/phone-detection/logs TIMESTAMP$(date %Y%m%d_%H%M%S) # 加载配置 if [ -f $CONFIG_FILE ]; then source $CONFIG_FILE else PORT7860 HOST0.0.0.0 WORKERS2 fi # 检查端口是否被占用 if netstat -tln | grep :$PORT /dev/null; then echo 端口 $PORT 已被占用尝试停止现有服务... ./stop.sh sleep 2 fi # 启动服务并记录详细日志 echo 启动时间: $(date) $LOG_DIR/start_$TIMESTAMP.log nohup python app.py --port $PORT --host $HOST --workers $WORKERS $LOG_DIR/access.log 2 $LOG_DIR/error.log echo $! /tmp/phone-detection.pid echo 服务启动完成进程ID: $!4. 常见问题与解决方案4.1 启动失败排查问题执行start.sh后服务立即退出# 查看详细错误信息 cd /root/phone-detection python app.py --port 7860 --host 0.0.0.0 # 检查依赖是否完整 pip check -r requirements.txt # 检查端口冲突 netstat -tlnp | grep 7860解决方案检查Python版本是否为3.11确认所有依赖包已正确安装检查7860端口是否被其他程序占用4.2 停止脚本问题问题stop.sh无法正常停止服务# 手动停止服务 ps aux | grep python app.py | grep -v grep | awk {print $2} | xargs kill -TERM # 清理残留进程 pkill -f gradio # 停止Gradio相关进程 pkill -f python.*app.py # 停止Python进程4.3 权限问题处理问题脚本没有执行权限# 添加执行权限 chmod x /root/phone-detection/start.sh chmod x /root/phone-detection/stop.sh # 检查脚本格式 cat -A start.sh # 应该以#!/bin/bash开头 # 如果从Windows传输需要转换行尾符 sed -i s/\r$// start.sh # 删除Windows换行符5. 高级使用技巧5.1 自定义配置创建配置文件config.ini来管理不同环境的设置# 开发环境配置 [development] PORT7860 HOST0.0.0.0 WORKERS1 LOG_LEVELDEBUG # 生产环境配置 [production] PORT7860 HOST0.0.0.0 WORKERS4 LOG_LEVELINFO MODEL_PATH/models/damo-yolo-s5.2 日志轮转设置为了避免日志文件无限增长可以设置日志轮转# 在start.sh中添加日志轮转 LOG_FILE/root/phone-detection/logs/access.log if [ -f $LOG_FILE ] [ $(wc -c $LOG_FILE) -gt 10000000 ]; then mv $LOG_FILE $LOG_FILE.old touch $LOG_FILE fi5.3 服务监控脚本创建监控脚本定期检查服务状态#!/bin/bash # monitor.sh - 服务监控脚本 SERVICE_PID$(cat /tmp/phone-detection.pid 2/dev/null) if [ -z $SERVICE_PID ] || ! ps -p $SERVICE_PID /dev/null 21; then echo 服务未运行尝试重新启动... ./start.sh # 发送通知 echo 手机检测服务已重启于 $(date) | mail -s 服务重启通知 adminexample.com fi6. 总结通过本文的详细解析你应该已经对DAMO-YOLO手机检测服务的start.sh和stop.sh脚本有了全面的了解。这两个脚本虽然看起来简单但却是服务稳定运行的重要保障。关键要点回顾自动化管理脚本实现了服务的全生命周期管理从启动到停止都无需人工干预错误处理完善的错误检测和处理机制确保各种异常情况都能妥善处理资源管理正确的进程管理和资源清理避免内存泄漏和资源浪费可扩展性脚本设计考虑了扩展性可以方便地添加新功能最佳实践建议定期检查脚本是否具有执行权限监控日志文件大小避免磁盘空间不足在生产环境中使用配置管理区分不同环境设置设置定时任务监控服务状态确保高可用性现在你已经掌握了这些脚本的使用方法和原理可以更加自信地管理你的手机检测服务了。如果在使用过程中遇到任何问题记得查看日志文件里面通常包含了解决问题的关键信息。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

相关新闻