1)java -jar 运行时是前台启动,并非后台运行
这个解决的方法是,使用nohub命令
nohup 是 no hang up 的缩写,就是不挂断的意思
nohup命令:如果你正在运行一个进程,并且关闭当前终端窗口还能在后台运行。
然后我们需要设置对应的日志输出目录:
# 设置输出目录nohup java -jar xxx.jar > catalina.out 2>&1 使用tail命令打印日志tail -f ./catalina.out
2)因为使用java -jar的时候,不指定java内存大小的话,会导致启动非常缓慢,所以需要设置堆栈大小
java -jar -XX:MetaspaceSize=1024m -XX:MaxMetaspaceSize=1024m
-Xms1024m -Xmx1024m -Xmn256m -Xss256k -XX:SurvivorRatio=8
-XX:+UseConcMarkSweepGC-XX:MetaspaceSize:最小元空间-XX:MaxMetaspaceSize:最大元空间-Xms:最小堆内存-Xmx:最大堆内存-Xmn:新生代大小-Xss:栈大小-XX:SurvivorRatio:新生代中Eden区与两个Survivor区的比值。
注意Survivor区有两个。
如:为3,表示Eden:Survivor=3:2,一个Survivor区占整个新生代的1/5-XX:+UseConcMarkSweepGC:设置并发收集器
nohup java -Xms256m -Xmx512m -jar mogu_sms-0.0.1-SNAPSHOT.jar > catalina.out 2>&1 &
由于经常启动这个命令容易忘记,我们可以写在脚本文件,每次执行脚本文件即可:
首先是启动脚本 startup.sh
#!/bin/bash nohup java -Xms256m -Xmx512m -jar youApplication.jar > catalina.out 2>&1 &tail -f ./catalina.out
启动脚本,并且打印脚本日志。
对应的有关闭进程脚本文件 shutdown.sh:
#!/bin/bashPID=$(ps -ef | grep youApplication.jar | grep -v grep | awk '{ print $2 }')if [ -z "$PID" ]then echo Application is already stoppedelse echo kill $PID kill $PIDfi