[{"data":1,"prerenderedAt":147},["ShallowReactive",2],{"content:\u002Fposts\u002Fjar-service-script":3,"surround:\u002Fposts\u002Fjar-service-script":138},{"id":4,"title":5,"body":6,"categories":111,"date":113,"description":114,"draft":115,"extension":116,"image":117,"meta":118,"navigation":120,"path":121,"permalink":117,"pinned":115,"published":117,"readingTime":122,"recommend":117,"references":117,"seo":127,"sitemap":128,"stem":129,"tags":130,"type":135,"updated":136,"__hash__":137},"content\u002Fposts\u002Fposts\u002Fjar-service-script.md","Linux 管理 JAR 服务的 Shell 脚本",{"type":7,"value":8,"toc":104},"minimark",[9,19,27,38,42,52,55,70,76,95,98],[10,11,15],"alert",{"type":12,"icon":13,"title":14},"info","tabler:robot","AI 迁移提示",[16,17,18],"p",{},"本文由 AI 协助从旧站迁移，尚未完成逐篇人工审校；内容如有疏漏，将在复核后修订。",[16,20,21,22,26],{},"在生产环境中直接用 ",[23,24,25],"code",{"code":25},"java -jar"," 启动服务不便管理，以下脚本封装了 start \u002F stop \u002F restart \u002F status 四个操作，支持后台运行。",[28,29,30],"blockquote",{},[16,31,32,33],{},"尚未安装 JDK？参见 ",[34,35,37],"a",{"href":36},"\u002Fposts\u002Fjdk-install","Linux 手动安装 JDK 1.8 并配置环境变量",[39,40,41],"h2",{"id":41},"使用方法",[43,44,50],"pre",{"className":45,"code":47,"language":48,"meta":49},[46],"language-bash","sh server.sh start    # 启动服务\nsh server.sh status   # 查看状态\nsh server.sh stop     # 停止服务\nsh server.sh restart  # 重启服务\n","bash","",[23,51,47],{"__ignoreMap":49},[39,53,54],{"id":54},"脚本内容",[16,56,57,58,61,62,65,66,69],{},"将以下内容保存为 ",[23,59,60],{"code":60},"server.sh","，修改顶部的 ",[23,63,64],{"code":64},"APP_NAME"," 和 ",[23,67,68],{"code":68},"APP_PATH"," 为实际值：",[43,71,74],{"className":72,"code":73,"filename":60,"language":48,"meta":49},[46],"#!\u002Fbin\u002Fbash\n\n# 修改为实际的 JAR 文件名（不含路径）\nAPP_NAME=app.jar\n# 修改为 JAR 文件所在目录\nAPP_PATH=\u002Fopt\u002Fapp\u002Fjar\n\nusage() {\n    echo \"Usage: sh server.sh [start|stop|restart|status]\"\n    exit 1\n}\n\nis_exist() {\n    pid=$(ps -ef | grep $APP_NAME | grep -v grep | awk '{print $2}')\n    if [ -z \"${pid}\" ]; then\n        return 1\n    else\n        return 0\n    fi\n}\n\nstart_log() {\n    is_exist\n    if [ $? -eq 0 ]; then\n        echo \"${APP_NAME} 启动成功！pid=${pid}\"\n    else\n        echo \"${APP_NAME} 启动失败，请检查后重试\"\n    fi\n}\n\nstart() {\n    is_exist\n    if [ $? -eq 0 ]; then\n        echo \"${APP_NAME} is already running. pid=${pid}\"\n    else\n        nohup java -jar ${APP_PATH}\u002F${APP_NAME} > \u002Fdev\u002Fnull 2>&1 &\n        start_log\n    fi\n}\n\nstop() {\n    is_exist\n    if [ $? -eq 0 ]; then\n        kill -9 $pid\n        echo \"${APP_NAME} 已关闭！pid=${pid}\"\n    else\n        echo \"${APP_NAME} is not running\"\n    fi\n}\n\nstatus() {\n    is_exist\n    if [ $? -eq 0 ]; then\n        echo \"${APP_NAME} is running. Pid is ${pid}\"\n    else\n        echo \"${APP_NAME} is not running.\"\n    fi\n}\n\nrestart() {\n    stop\n    echo \"${APP_NAME} 准备重启...\"\n    sleep 5\n    start\n}\n\ncase \"$1\" in\n    \"start\")   start   ;;\n    \"stop\")    stop    ;;\n    \"status\")  status  ;;\n    \"restart\") restart ;;\n    *)         usage   ;;\nesac\n",[23,75,73],{"__ignoreMap":49},[10,77,79,89],{"type":78},"tip",[16,80,81,82,85,86,88],{},"如果 JAR 包名称包含版本号等动态部分（如 ",[23,83,84],{"code":84},"app-1.0.0.20240101.jar","），可将 ",[23,87,64],{"code":64}," 设置为固定前缀，并将启动命令改为：",[43,90,93],{"className":91,"code":92,"language":48,"meta":49},[46],"nohup java -jar ${APP_PATH}\u002F${APP_NAME}*.jar > \u002Fdev\u002Fnull 2>&1 &\n",[23,94,92],{"__ignoreMap":49},[39,96,97],{"id":97},"赋予执行权限",[43,99,102],{"className":100,"code":101,"language":48,"meta":49},[46],"chmod +x server.sh\n",[23,103,101],{"__ignoreMap":49},{"title":49,"searchDepth":105,"depth":105,"links":106},4,[107,109,110],{"id":41,"depth":108,"text":41},2,{"id":54,"depth":108,"text":54},{"id":97,"depth":108,"text":97},[112],"系统","2022-10-20 10:11:22","提供一个开箱即用的 Shell 脚本，用于管理 Java JAR 包服务的启动、停止、重启与状态查看，适合生产环境部署。",false,"md",null,{"slots":119},{},true,"\u002Fposts\u002Fjar-service-script",{"text":123,"minutes":124,"time":125,"words":126},"3 min read",2.08,124800,416,{"title":5,"description":114},{"loc":121},"posts\u002Fposts\u002Fjar-service-script",[131,132,133,134],"Linux","运维","Shell","Java","tech","2026-06-27 10:11:22","6Gk7WacRhFYVEMjZOnhcCMbXh6inU6Es_cMBe5jcaiQ",[139,144],{"title":140,"path":141,"stem":142,"date":143,"type":135,"children":-1},"Docker 安装与配置指南","\u002Fposts\u002Fdocker-guide","posts\u002Fposts\u002Fdocker-guide","2022-09-18 13:25:00",{"title":37,"path":36,"stem":145,"date":146,"type":135,"children":-1},"posts\u002Fposts\u002Fjdk-install","2024-06-20",1788712226396]