| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- #!/bin/bash
- # 优化版伺服驱动选型工具启动脚本
- # 使用Python轻量级服务器,添加资源限制和错误处理
- set -euo pipefail
- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
- PORT=8080
- PID_FILE="$SCRIPT_DIR/.server.pid"
- # 检查端口是否已被占用
- check_port() {
- if lsof -i :$PORT > /dev/null 2>&1; then
- echo "错误: 端口 $PORT 已被占用"
- echo "请先停止占用该端口的进程,或使用其他端口"
- return 1
- fi
- return 0
- }
- # 启动服务器函数
- start_server() {
- cd "$SCRIPT_DIR"
-
- # 设置ulimit限制资源使用(防止内存过度消耗)
- ulimit -v 524288 # 限制虚拟内存为512MB
- ulimit -m 262144 # 限制物理内存为256MB
-
- echo "启动伺服驱动选型工具 (优化版)..."
- echo "工作目录: $SCRIPT_DIR"
- echo "访问地址: http://localhost:$PORT"
- echo "资源限制: 内存 256MB, 虚拟内存 512MB"
- echo "按 Ctrl+C 停止服务器"
- echo ""
-
- # 启动Python服务器并记录PID
- python3 -m http.server $PORT &
- SERVER_PID=$!
- echo $SERVER_PID > "$PID_FILE"
-
- echo "服务器PID: $SERVER_PID"
- echo "PID文件: $PID_FILE"
-
- # 等待服务器进程结束
- wait $SERVER_PID
- }
- # 清理函数
- cleanup() {
- echo ""
- echo "正在停止服务器..."
- if [ -f "$PID_FILE" ]; then
- PID=$(cat "$PID_FILE")
- if kill -0 $PID 2>/dev/null; then
- kill $PID
- wait $PID 2>/dev/null
- fi
- rm -f "$PID_FILE"
- fi
- echo "服务器已停止"
- exit 0
- }
- # 设置信号处理
- trap cleanup SIGINT SIGTERM
- # 主程序
- main() {
- # 检查Python3是否可用
- if ! command -v python3 &> /dev/null; then
- echo "错误: 未找到 python3"
- exit 1
- fi
-
- # 检查端口可用性
- if ! check_port; then
- exit 1
- fi
-
- # 启动服务器
- start_server
- }
- # 运行主程序
- main "$@"
|