优雅转身

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  65 随笔 :: 0 文章 :: 25 评论 :: 34万 阅读
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

前言

这两天把视力档案后台部署的方式改了一下,由原来打包成war包,部署到一个tomcat里面,转变成直接打包成jar包,然后使用 java -jar命令进行启动

下面讲讲遇到的问题

1)java -jar 运行时是前台启动,并非后台运行

这个解决的方法是,使用nohub命令

nohup 是 no hang up 的缩写,就是不挂断的意思

nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。

nohup 命令

用途:不挂断地运行命令。

语法:nohup Command [ Arg … ][ & ]

描述:nohup 命令运行由 Command 参数和任何相关的 Arg 参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 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 &

 

3)设置两个启动脚本,以后方便直接启动和关闭

首先是启动脚本  startup.sh

#!/bin/bash     
nohup java -Xms256m -Xmx512m -jar youApplication.jar  > catalina.out  2>&1 &
tail -f ./catalina.out

 

然后是关闭脚本 shutdown.sh

复制代码
#!/bin/bash
PID=$(ps -ef | grep youApplication.jar  | grep -v grep | awk '{ print $2 }')
if [ -z "$PID" ]
then
    echo Application is already stopped
else
    echo kill $PID
    kill $PID
fi
复制代码

 

 

posted on   优雅转身  阅读(6900)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
点击右上角即可分享
微信分享提示