作者:mobiledu2502869423 | 来源:互联网 | 2023-08-25 13:10
现公司是集成商,最近友商来了个新入职的运维,实习生,嘛也不会。手把手的教导怎么升级jar包。在此记录下linux服务器下的一些基本操作。供新手参考,如有疏漏或错误,请指出,共同学习,共同探讨。
1.根据jar包名去判断
升级jar包 我们首先要停掉旧的jar包,我们要获取之前运行的jar包,查看现在在运行的java进程
ps -ef | grep java
可以看到查出来两个进程:
简单解释一下为什么会有两个,第一个就是我们要找的进程,可以看到当时的启动命令的是
java -jar DownloadDemo.jar
而第二个是什么呢?
其实第二个是这个查询命令本身。就是说你在执行查询的时候,查询本身也是一个进程。
在实际的生产环境中,可能会有多个java进程,这个时候就需要通过jar包名去判断哪个进程才是你想要重新部署的那个了。当然也会有情况,你根据jar包名无法判断哪个是(尤其是人员更迭频繁而且文档不齐全的公司),这个时候我们可以通过端口号去判断哪个进程才是我们想要的。
2.根据端口号去判断
如果不知道原来的jar包位置也不知道jar包名称有哪些要素,我们还可以通过服务的端口号去定位,以笔者的端口号9090为例。使用如下命令查看网络信息详情:
netstat -tunlp | grep 9090
#9090 换成你的端口号即可
在这里贴一张图解释命令参数的含义:
看完参数解释后发现,其实-u是我们不需要的,也就是说 netstat -tnlp即可,我们来看一下命令的执行结果:
进程号为11417的进程就是我们想要的进程,再用ps命令查看一下这条进程:
可以看到就是我们要找的进程。
停掉旧的进程后,更新jar包,我们就可以启新的jar包了,这个时候可能还会遇到一个问题,你甚至不知道jar包位置,如何确定jar包位置呢?这个就需要停jar包之前去寻找了。如果停了之后再找那就杯具了。
3.根据进程寻找jar包位置
如果服务器文件不是很多,而且知道jar包名字,可以用find命令去找jar包的位置,在此不作赘述。
如果不知道jar包位置,找到进程后先不要停,我们可以根据进程的信息去寻找jar包的位置,
所以遇到找不到jar包位置的困难,不要怕,我们记下进程id(pid),然后大喊三遍:
linux一切皆文件!
linux一切皆文件!
linux一切皆文件!
奥里给!
然后输入以下指令
ls -l /proc/11417
#11417为pid
可以看到进程的详情信息,目前对我们有用的是exe和cwd
cwd就是当前进程jar包所在的目录,exe是执行文件的路径,即jdk/jre中java所在的路径。
另:此方法也经常用于寻找nginx和nginx目录等。
到此,我们绝对绝可以换新包启动新包了。
4.启新jar包
如果后台日志被重定向到了.out文件中,如图中dd.out所示:
在确保旧的out文件没用后,我们应当先删除旧的out文件,再启动新包。
rm -f dd.out
然后杀掉旧的进程,执行启动新包的命令:
kill -9 11417
nohup java -jar /home/bob/springbootDemo/DownloadDemo.jar > DownloadDemo.out &
#这里我选择用jar包的绝对路径,避免其他同事找不到jar包路径的问题
可以看到 新的jar包已经启动了,pid是11935,我们再用ps命令查看一下。
因为启动命令中是jar包的绝对路径,所以查看进程中也可以查看到jar包的绝对路径,如果不放心 可以看下后台日志是否启动成功了。
bob@zhang:~/springbootDemo$ tail -f DownloadDemo.out
2022-03-14 16:53:06.626 INFO 11935 --- [ main] com.cjbdi.DownloadDemo : Starting DownloadDemo v1.0-SNAPSHOT on zhang with PID 11935 (/home/bob/springbootDemo/DownloadDemo.jar started by bob in /home/bob/springbootDemo)
2022-03-14 16:53:06.630 INFO 11935 --- [ main] com.cjbdi.DownloadDemo : No active profile set, falling back to default profiles: default
2022-03-14 16:53:08.714 INFO 11935 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 9090 (http)
2022-03-14 16:53:08.736 INFO 11935 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2022-03-14 16:53:08.737 INFO 11935 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.31]
2022-03-14 16:53:08.941 INFO 11935 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2022-03-14 16:53:08.945 INFO 11935 --- [ main] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 2179 ms
2022-03-14 16:53:10.062 INFO 11935 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
2022-03-14 16:53:10.453 INFO 11935 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 9090 (http) with context path ''
2022-03-14 16:53:10.459 INFO 11935 --- [ main] com.cjbdi.DownloadDemo : Started DownloadDemo in 4.674 seconds (JVM running for 5.506)
用tail -f 看out文件,可以看到服务已经再9090端口成功启动了!
到此更新jar包就完成了!