
Linxu 启动jar包脚本linux 启动jar 包的脚本工具#!/bin/shnohupjava-Xms768m-Xmx768m-jarxxxx.jarlogs/xxxx.log21命令详解整条命令作用后台启动 Java jar 包程序脱离终端标准输出和错误输出都写入日志文件关闭 ssh 窗口程序不会退出nohup全称 no hangup不挂断。作用让进程忽略 SIGHUP 信号。SSH 远程连接关闭终端时普通程序会收到挂断信号退出加nohup后不会被关闭。⚠️ nohup 本身不会放到后台运行后台由末尾的实现。java调用 java 虚拟机运行程序-Xms768mJVM 初始堆内存 768MB。程序启动时就分配这么多堆内存。-Xmx768mJVM 最大堆内存 768MB。堆内存最多只能用到 768MB内存溢出会 OOM。这里 Xms 和 Xmx 设成一样避免运行时频繁扩容 / 缩容堆减少性能损耗。-jar xxxx.jar运行可执行 jar 包xxxx.jar是你的 springboot 等打包后的 jar 文件。 logs/xxxx.log标准输出重定向stdout程序 System.out 打印的日志含义把正常控制台输出写入logs/xxxx.log而不是打印在当前终端。注意logs目录必须提前存在否则会报错命令不会自动创建文件夹。21Linux 文件描述符1 stdout 标准输出2 stderr 标准错误异常报错、堆栈信息21把错误输出 重定向到 和标准输出同一个地方也就是 logs/xxxx.log如果不加21程序报错信息会输出到 nohup 默认的nohup.out不会进你的日志文件。末尾将进程放到后台运行终端可以继续输入其他命令不会阻塞。优化# 覆盖日志当前命令nohupjava-Xms768m-Xmx768m-jarxxxx.jarlogs/xxxx.log21# 追加日志重启不清空旧日志nohupjava-Xms768m-Xmx768m-jarxxxx.jarlogs/xxxx.log21nohup 命令理解SIGHUP挂断信号SSH 终端断开时系统默认发给终端里所有进程让它们退出。nohup的作用就是让进程收到 SIGHUP 时直接忽略不退出。1. 什么时候会触发 SIGHUP场景你用 SSH 连上 Linux在这个终端窗口里启动程序。下面几种操作会触发系统发送SIGHUP关闭 SSH 窗口 / 断开网络、SSH 掉线执行exit退出当前终端会话原理每一个 SSH 连接对应一个会话 (session)会话下面启动的进程默认属于这个终端。当会话销毁内核会给会话内所有进程发送SIGHUP本意是终端挂断了相关程序都关掉。2. nohup 到底做了两件事修改进程信号处理收到 SIGHUP直接忽略不执行退出逻辑自动把标准输出 / 标准错误重定向到nohup.out如果你不自己写 log的话⚠️ 重点区分nohup≠ 后台运行放到后台执行但是没有修改信号处理如果你只写java -jar xxx.jar 不带 nohup程序虽然在后台跑但仍然属于当前 SSH 会话一旦关闭 SSH 窗口SIGHUP 信号过来进程照样被杀掉加上nohup进程忽略 SIGHUP关闭 SSH程序继续运行。linux 批量启动项目脚本start.sh 脚本ps -ef | grep xxxx1 | grep -v grep | awk {print kill -9 $2} | sh echo xxxx1 stop nohup java -jar -d64 -server -Xms1024m -Xmx1024m -Xmn1g -XX:MaxMetaspaceSize1024m cmos-biz-basecenter-start-1.0.1.jar /dev/null 21 echo xxxx1 startecho xxxx1 cd /xxxx1 sh start.sh sleep 20s echo xxxx2 cd ../xxxx2 sh start.sh sleep 20s echo xxxx3 cd ../xxxx3 sh start.sh sleep 20s echo xxxx3 cd ../xxxx4 sh start.sh sleep 20slinux 批量停止项目的脚本ps -ef | grep xx1 | grep -v grep | awk {print kill -9 $2} | sh ps -ef | grep xx2 | grep -v grep | awk {print kill -9 $2} | sh ps -ef | grep xx3| grep -v grep | awk {print kill -9 $2} | sh ps -ef | grep xx4 | grep -v grep | awk {print kill -9 $2} | sh ps -ef | grep xx5 | grep -v grep | awk {print kill -9 $2} | sh ps -ef | grep xx6 | grep -v grep | awk {print kill -9 $2} | shWindows 启动项目脚本bat 启动jar包的脚本title xxxxjava-jar-Xms768m-Xmx768m-XX:MetaspaceSize256m xxxxx.jar pause启动多个bat脚本start /D..\3.redis startup.bat start /D..\5.license-server\license-serverhhhh.bat start /D..\4.authorization-server dddd.bat start /D..\6.platform\1.platform\1.single\ccccc startup.bat start /D..\12.erp ggg.bat启动脚本指定参数echo offsetLOG_FILEapplication.logsetJAVA_OPTS-Xms512m-Xmx1024msetCLASSPATH.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jarsetJAVA_HOMEC:\Program Files\Java\jdk1.8.0_231setPATH%JAVA_HOME%\bin;%PATH%echoStarting Spring Boot application, logging to %LOG_FILE% startjava%JAVA_OPTS%-jaryour-spring-boot-app.jar%LOG_FILE%21title usercenter-service-srvjava-jar-Xms512m-Xmx512m-Xmn256m-XX:MetaspaceSize256m usercenter-service-srv.jar--spring.profiles.avicitlocal./log/userserver.log21pausestart /D .\7002_basecenter startup.bat start /D .\7008_xbom startup.bat start /D .\8082_userservice startup.bat