内容html
本文主要介绍了Spring Boot项目打成jar包后,如何在centos上前台、后台启动和关闭,以及多jar包经过编写简单脚本批量启动。java
版本linux
操做系统: CentOS 7.2 64位spring
JDK:1.8.0_181centos
适合人群springboot
linux运维人员,Java开发人员网络
说明运维
转载请说明出处:Linux入门实践笔记(二)--Jar包运行与关闭微服务
前提linux运维
JDK安装和环境变量的配置,请参考:Linux入门实践笔记(一)——安装JDK与运行jar包
步骤
直接执行java -jar jar包名称,启动过程等控制台输出都会在当前终端控制台打印,且当前控制台不能再输入命令。若是关闭控制台,运行的java程序也会关闭。
前台运行的java程序,能够经过CTRL+C组合健进行关闭,而且此种方式会执行JVM和bean的destory相关的生命周期方法,好比关闭Spring容器,移除EurekaServer中注册的微服务,执行销毁回调方法等操做。
#启动java程序 [jmsA8@iz8vb62snc6e5cage5yvzbz jars]$ java -jar eureka-server-7001-7002-1.0-SNAPSHOT.jar --spring.profiles.active=peer1 #springboot项目启动 ... . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/ ... #关闭java程序 #按下CTRL+C组合健,关闭java程序 2018-10-24 16:24:12.429 INFO 11835 --- [ Thread-14] c.n.eureka.DefaultEurekaServerContext : Shutting down ... 2018-10-24 16:24:12.436 INFO 11835 --- [ Thread-14] c.n.eureka.DefaultEurekaServerContext : Shut down ...#经过输出能够看到执行了JVM和bean的destory相关的生命周期方法
显然,前台程序关闭很方便;可是,运行程序的效果有不少弊端。经过咱们在执行java项目时,不能影响其余命令的输入,而且即便控制台关闭,java程序也不该该关闭。
最简单直接的方式:在java -jar 命令的最后添加 "&";
这种方式能够很方便的在后台启动java程序,启动过程等控制台输出会在当前终端控制台打印;同时当前控制台能够输入其余命令,若是关闭控制台,运行的java程序也不会关闭。
可是后台运行的java项目,没法经过CTRL+C组合健进行关闭,须要使用"kill -9 PID"的方式关闭。此种方式有个很大的弊端:不会执行JVM和bean的destory相关的生命周期方法,好比经过这种方式关闭的微服务,不会在EureakServer中移除注册,反而会被误认为产生网络分区故障。
#启动java程序 [jmsA8@iz8vb62snc6e5cage5yvzbz jars]$ java -jar eureka-server-7001-7002-1.0-SNAPSHOT.jar --spring.profiles.active=peer1 & [1] 12199 #显示两个号码,分别是任务号 1,和进程PID 12199 #springboot项目启动 ... . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/ ... #关闭java程序 #没法经过CTRL+C组合健进行关闭,须要使用"kill -9 PID"的方式关闭 [jmsA8@iz8vb62snc6e5cage5yvzbz jars]$ kill -9 12199 [1]+ Killed java -jar eureka-server-7001-7002-1.0-SNAPSHOT.jar --spring.profiles.active=peer1
显然,后台程序的启动很方便,可是关闭程序存在弊端。接下来,咱们整合上面两种方式的优势,作到“后台运行,前台关闭”。
启动:java -jar 命令的最后添加 "&",后台运行java程序;
关闭:”fg jobnum“命令将后台程序转到前台执行,而后“CTRL+C组合健“关闭;
#启动java程序 [jmsA8@iz8vb62snc6e5cage5yvzbz jars]$ java -jar eureka-server-7001-7002-1.0-SNAPSHOT.jar --spring.profiles.active=peer1 & [1] 12199 #显示两个号码,分别是任务号 1,和进程PID 12199 #springboot项目启动 ... . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/ ... #关闭java程序 fg 1 #“fg jobnum”命令将后台程序转到前台执行 java -jar eureka-server-7001-7002-1.0-SNAPSHOT.jar --spring.profiles.active=peer1 ... #java程序继续执行 #按下CTRL+C组合健,关闭java程序 2018-10-24 17:24:12.429 INFO 11835 --- [ Thread-14] c.n.eureka.DefaultEurekaServerContext : Shutting down ... 2018-10-24 17:24:12.436 INFO 11835 --- [ Thread-14] c.n.eureka.DefaultEurekaServerContext : Shut down
启动:java -jar 命令前台运行java程序;
后台运行:"CTRL+Z组合键"将前台程序转后台并暂停运行,使用“bg jobnum”命令启动后台程序;
关闭:”fg jobnum“命令将后台程序转到前台执行,而后“CTRL+C组合健“关闭;
#启动java程序 [jmsA8@iz8vb62snc6e5cage5yvzbz jars]$ java -jar eureka-server-7001-7002-1.0-SNAPSHOT.jar --spring.profiles.active=peer1 #springboot项目启动 ... . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/ ... ^Z #"CTRL+Z组合键"将前台程序转后台并暂停运行,能够看到任务号是1 [1]+ Stopped java -jar eureka-server-7001-7002-1.0-SNAPSHOT.jar --spring.profiles.active=peer1 [jmsA8@iz8vb62snc6e5cage5yvzbz jars]$ bg 1 #使用“bg jobnum”命令启动后台程序; [1]+ java -jar eureka-server-7001-7002-1.0-SNAPSHOT.jar --spring.profiles.active=peer1 & ... #java程序继续执行 #关闭java程序 fg 1 #“fg jobnum”命令将后台程序转到前台执行 java -jar eureka-server-7001-7002-1.0-SNAPSHOT.jar --spring.profiles.active=peer1 ... #java程序继续执行 #按下CTRL+C组合健,关闭java程序 2018-10-24 17:53:09.568 INFO 12672 --- [ Thread-14] c.n.eureka.DefaultEurekaServerContext : Shutting down ... 2018-10-24 17:53:09.573 INFO 12672 --- [ Thread-14] c.n.eureka.DefaultEurekaServerContext : Shut down
若是须要开启的jar包不少,能够编写启动脚本批量启动。
#建立脚本 [jmsA8@iz8vb62snc6e5cage5yvzbz jars]$ touch startCMD.sh #编辑脚本 [jmsA8@iz8vb62snc6e5cage5yvzbz jars]$ vi startCMD.sh java -jar eureka-server-7001-7002-1.0-SNAPSHOT.jar --spring.profiles.active=peer1 & java -jar eureka-server-7001-7002-1.0-SNAPSHOT.jar --spring.profiles.active=peer2 & java -jar eureka-server-7001-7002-1.0-SNAPSHOT.jar --spring.profiles.active=peer3 & #为脚本增长所属用户和组下的可执行权限 [jmsA8@iz8vb62snc6e5cage5yvzbz jars]$ sudo chmod 774 startCMD.sh #执行脚本,启动jar包 [jmsA8@iz8vb62snc6e5cage5yvzbz jars]$ ./startCMD.sh #多个springboot项目同时启动 ... . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/ ... #查询各个程序的PID [jmsA8@iz8vb62snc6e5cage5yvzbz jars]$ jps 13250 jar 13251 jar 13252 jar 13646 Jps #查看PID和执行命令的对应关系 [jmsA8@iz8vb62snc6e5cage5yvzbz jars]$ ps amxs | grep java 1000 13250 0000000000000000 - - - - pts/1 0:43 java -jar eureka-server-7001-7002-1.0-SNAPSHOT.jar --spring.profiles.active=peer1 1000 13251 0000000000000000 - - - - pts/1 0:41 java -jar eureka-server-7001-7002-1.0-SNAPSHOT.jar --spring.profiles.active=peer2 1000 13252 0000000000000000 - - - - pts/1 0:41 java -jar eureka-server-7001-7002-1.0-SNAPSHOT.jar --spring.profiles.active=peer3 1000 13645 0000000000000000 - - - - pts/1 0:00 grep --color=auto java #kill -9 强行关闭java程序,能够所有关闭,也能够根据需求关闭特定的java程序。 [jmsA8@iz8vb62snc6e5cage5yvzbz jars]$ kill -9 12815 12816 12817
这种批量运行java程序的方式,目前只找到了强制关闭的方式,若是后续了解到正常关闭的方式,会在博客中进行更新。