linux 部署jar包

1.准备工作

linux如果没有配置java环境变量的话,具体操作见文末推荐。

2.启动jar包

linux操作系统下启动jar包的方式和windows操作系统没有区别。

用法都是遵循java语法规范。

前提:跳转到要启动的jar包所在目录

cd jar包所在绝对路径

使用默认jdk启动

查看当前jdk版本

java -versoin

 方式一:nohup不指定输出文件
nohup java -jar xxx.jar &

说明:nohup和&指令缺一不可。

nohup:这个命令使得你的应用在退出shell后仍然继续运行。

确保在SSH会话关闭后,程序仍然运行;否则,在关闭Xshell后,该程序将会终止运行。

如果不使用的话,在关闭Xshell后,该程序会被终止运行。

使用nohup启动的进程会忽略挂断信号,并且会将输出重定向到一个文件中,除非另行指定。

也就是说:

当我们使用nohup命令启动进程时,如果没有指定日志输出位置的话,它会在启动的时候自动创建nohup.out文件并将执行日志写入到该文件当中。

&:以后台守护进程的方式运行(后台运行),否则,当我们按Ctrl+c退出当前命令的话,该程序将会终止运行。

使用nohup,如果没有指定输出文件的话,会在当前目录下,自动生成nohup.out文件,并将日志写入到这个文件当中。

方式二:nohup指定输出文件
nohup java -jar xxx.jar > xxx.out 2>&1 &

如果想退出当前命令,按Ctrl+c。

java -jar xxx.jar:java运行jar的指令。

后面跟的日志文件,如果带路径会输出到指定目录下,如果不带路径,会输出到当前操作的目录下。

另外,如果日志文件不存在,会自动创建。

2>&1:这将标准错误重定向到标准输出的位置,也就是指前面的日志文件。

&:在命令的末尾,这个符号将命令放到后台运行。

说明:此命令必须带上,否则当你退出当前操作后,当前执行的命令会被终止。 

./connect-distributed.sh ../config/connect-distributed.properties &

使用上述命令启动后,会出现如下内容。

也就是:

执行日志会同时输出到屏幕上面。

虽然我们通过Ctrl+C退出,并不影响程序在后台继续运行。

只使用&,除了上面的缺点外,还有一个,那就是:

当我们关闭Xshell(SSH会话)后,该程序也会被终止。(SSH的英文全称是:secure Shell。它是一种网络协议,用于计算机之间的加密登录,并提供更安全的SFTP服务)

所以,nohup命令必须使用。

指定jdk启动

nohup /jdk绝对路径/bin/java -jar xxx.jar &

启动时指定文件字符集

nohup java -Dfile.encoding=utf-8 -jar xxx.jar &

启动时指定配置文件(springboot项目) 

有的时候,会遇到这种情况:

springboot项目的配置文件需要修改,但是,我们要不想重新打包,怎么办?

可以把修改后的application.yml文件放到和jar包同级目录下。

然后在启动项目的时候,指定使用该配置文件。

nohup java -jar xxx.jar --spring.config.additional-location=application文件所在绝对路径 &

与 --spring.config.location 不同,--spring.config.additional-location 不会使项目默认的配置文件失效,使用该命令行参数添加的外部配置文件会与项目默认的配置文件共同生效,形成互补配置,且其优先级是最高的,比所有默认配置文件的优先级都高。

通过这种方式,我们可以在不影响项目默认配置的情况下,添加特定于环境或特定部署的配置文件,以满足不同场景下的需求。

使用外部配置文件的好处是:我们可以将配置与代码分离,使得配置更易于管理和修改。同时,这也为多环境部署和应用程序的可移植性提供了便利。

虽然在启动的时候,默认配置文件是:jar包中的application-jxfy.yml,但实际使用的是外部application-jxfy2.yml。

启动时指定占用的端口号

nohup java -jar xxx.jar --server.port=端口号 &

查看启动/执行日志

tail -f 日志文件名称.后缀名

输入以上指令,并按Enter键执行。

说明:

在项目启动之后,我们通常需要查看运行日志,通过查看日志才方便我们判断项目是否启动成功。

退出当前命令

快捷键:Ctrl+c。

3.结束jar包运行

要想结束某个程序的运行,需要查看它所对应的进程ID,然后杀掉程序所对应的PID即可。

查看PID有两种方式。

方式一:根据项目jar包名称进行搜索,获取进程ID。

ps -ef|grep jar包的完整名称/部分名称

根据最后一列(CMD指令)找到自己要关闭程序,第二列就是对应的PID。

方式二:根据项目jar包所占用的端口,获取进程ID。

netstat -nltp|grep 要关闭的程序所使用的端口

由上图所知:

8058端口所对应PID为:3624

杀掉进程即可。

kill PID
kill -9 PID

kill -9 pid:表示强制杀死指定进程。

4.更新正在运行的jar包

方式一:关闭项目运行,更新jar包,重新启动。

方式二:删掉/更新jar包,关闭项目运行,重新启动。

说明:

当使用java启动jar包成功后,即使我们将此jar包删掉也不影响它的正常运行,因为该jar包在启动的时候已经被java加载到了虚拟机中。

5.补充说明

java jps命令

说明:为了方便记忆,我们可以将jps认为是:键盘手。

如果在linux当中已经配置好了java环境变量,那我们就可以使用jps来查看当前所有运行的java进程及相关信息,

如:进程ID、主类名称和JVM参数等。

查看java运行的程序/进程

ps -ef|grep java

 

写在最后

  哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!

 相关推荐:

posted @ 2024-06-18 18:28  Marydon  阅读(29)  评论(0编辑  收藏  举报