linux服务器上jar包启动及关闭方式

随着微服务兴起,springboot也用得越来越多,用过springboot的都知道springboot项目默认是打包成jar包的,执行jar包就可以同时启动其内置的tomcat,免去了单独部署tomcat的工作,可谓非常方便,这里我总结一下Linux服务器上,springboot jar包的启动和关闭的几种方式。

在开始启动之前,我先在我的/usr/programme/serviceJarTest目录下上传了一个简单的springboot工程jar包:
上传jar包

1、直接启动

直接启动命令很简单:

[guansheng@lgs serviceJarTest]$ java -jar chapter.jar

可以看到启动日志是直接打印在终端上的:
普通启动
这种启动方式有个缺点:启动好了之后就不能动了,不能ctrl+c退出,也不能关闭终端,一旦退出或者关闭终端,程序就会关闭。

2、后台启动

后台启动命令如下:

[guansheng@lgs serviceJarTest]$ java -jar chapter.jar &

&符号就代表后台启动,这种启动方式日志仍然输入到终端控制台中,但是ctrl+c不会关闭程序,退出终端,程序会关闭

3、nohup启动

命令如下:

[guansheng@lgs serviceJarTest]$ nohup java -jar chapter.jar &

这种方式会生成一个nohup.out来记录日志,所以日志不会直接输出到终端,而且这种方式启动,ctrl+c或者关闭终端,程序都不会结束
nohup启动

4、指定日志文件

nohup启动的日志输出文件nohup.out是自动生成的,但是我们更希望自己指定日志输出文件,用以下命令:

[root@lgs serviceJarTest]# nohup java -jar chapter.jar > logs.log &

此命令会将日志重定向到当前的logs.log文件中,但是只会输出标准输出。
这种方式启动,ctrl+c或者关闭终端,程序都不会结束自定义输出文件

5、重定向错误输出(推荐)

上面的命令只会讲标准输出(stdout)重定向到logs.log文件中,下面命令可以将错误也输出到文件中,也就是stderr

[root@lgs serviceJarTest]# nohup java -jar chapter.jar > logs.log 2>&1 &

这条命令不懂的可以去了解一下shell脚本,我简单解释一下:
Linux下1表示标准输出,2表示错误输出
“>logs.log”表示标准输出重定向到logs.log中,默认是标准输出,省略1,不省略的话可以写成1>logs.log;
"2>&1"表示错误输出也重定向到logs.log中,其中&1表示前面的logs.log文件,不加&,写成2>1的话就表示把错误输出到1这个文件而不是前面标准输出的文件logs.log,所以&要加上;
最后一个&表示以后台方式启动程序。
这种方式启动,ctrl+c或者关闭终端,程序都不会结束。

6、以系统服务启动(更推荐)

以系统服务启动,实际上就是自己注册一个系统服务,然后系统服务的功能就是启动此jar包,所以我们就可以通过启动自定义系统服务控制jar包的启动了,这种方式有很多好处,最显而易见的就是系统服务的启动、停止、查看状态、开机自启动等命令能直接管理到jar包进程。

  1. 创建自定义系统服务(只介绍CentOS7下的方式)
    在/etc/systemd/system目录下创建一个xxx.service文件,xxx就是自定义的服务名称。
    在文件中写入以下内容:
[Unit]

Description=chapter

After=syslog.target

[Service]

ExecStart=/usr/software/jdk1.8.0_221/bin/java -jar /usr/programme/serviceJarTest/chapter.jar

[Install]

WantedBy=multi-user.target

内容解释:
[Unit]说明
Description:服务的描述
After:设置在某个服务启动后启动

[Service]服务参数配置
ExecStart服务运行执行的命令

[Install]服务安装的相关设置,可设置为多用户

根据需要,自己修改description和ExecStart的内容即可(ExecStart后面的java命令需要全路径,写java -jar 会启动不了)
2. 启动系统服务

[root@lgs serviceJarTest]# systemctl start 服务名

如果配置没错,这句命令执行之后,jar包也会启动:
系统服务启动
这里记录一下系统服务相关的几个命令:

systemctl start xxx  #启动服务
systemctl status xxx  #查看服务状态
systemctl stop xxx  #停止服务
systemctl enable xxx  #设置服务开机自启动
systemctl disable xxx  #取消服务开机自启动
systemctl restart xxx  #重启服务

7、关闭jar包程序

  1. 如果是第一种方式启动,ctrl+c就可以直接关闭

  2. 如果是第二种方式启动,关闭终端就可以关闭程序

  3. 如果是第三四五种方式启动,可以用kill进程的方式结束进程:
    查看java进程:

[root@lgs serviceJarTest]# ps -ef | grep java

可以看到你启动的jar包的进程:
查看jar包进程
3105就是jar包的系统进程,运行kill -9 3105即可结束进程。

或者在你以第三四五种方式启动的时候,终端会打印出启动的进程号,如果你够厉害,能记住,那直接kill -9 杀死也行:
启动时候的进程号
4. 如果是以系统服务方式启动的jar包,那可以直接用systemctl stop xxx直接关闭。

以上就是jar包启动和关闭的方法,来源于日常总结,不一定很全,欢迎补充。

  • 19
    点赞
  • 113
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值