服务器删除项目并杀死进程,使用netstat -ntlp还是ps -ef来搜索服务器上的JVM【Tomcat】进程,关掉【kill kill -3 kill -9】,重新启动【java -jar还是 ...

查找项目

不知道项目名和端口号

ps -eaf | grep tomcat

ps -eaf | grep java

知道项目名,不知道端口号

ps -eaf | grep 项目名

知道端口号,不知项目名

某台服务器上部署很多个项目,比如以jar结尾、以war结尾的项目等等。

在众多项目中,知道某项目的端口号,但不知道该项目的名称,也不知道该端口号的进程,如图所示:

0c476d0424aa5baa574e91ca4c1b84de.png

想在上面的项目中,删除9010端口号的项目,然后重新部署新的jar包,于是,需要通过以下命令查找

netstat -ntlp

6a561782c613585d96883e0be408ca5d.png

找到端口号对应的进程杀掉,重新部署即可。

关闭项目

关闭命令

关闭项目时,我们一般使用kill,比如 kill , kill -3 , kill -9,那么,kill的命令是什么?

kill命令的格式是 kill -Signal pid,其中 pid 就是进程的编号,signal是发送给进程的信号,参考文档,默认参数下,kill 发送 SIGTERM(15)信号给进程,告诉进程,你需要被关闭,请自行停止运行并退出,有时,我们还会传SIGTERM(3)和SIGTERM(9)信号给进程。

ef63d1d4887a9c564ead0d17db7f4e5d.png

kill pid

该方式告诉进程你需要被关闭,请自行停止运行并退出,进程可以清理缓存自行结束,也可以拒绝结束,它的优缺点同时存在。

优点

进程中的所有任务【线程】结束掉才会死掉,这就保证了数据库的安全。

JVM关闭: JVM进程中的线程只剩下守护线程才会被杀死。

比如,我在对接第三方接口时,对方已经响应并有数据返回,说明对方已经提交了事务,我如果使用kill -9 pid的方式杀死进程,JVM【Tomcat】会停止所有的任务,我这边无法提交事务,从而造成数据不一致的问题,数据丢失便出现了。

这种方式在一定程度上保证了数据的安全性。

Tomcat的shutdown.sh 或shutdown.bat默认是这种方式。

缺点

正因为它的优点存在,假如我们在项目中写了线程的死循环,Tomcat等待任务【线程】终止关闭,而任务【线程】无法终止,这就造成了进程无法杀死。

我们可以在死循环中设置一个信号,比如public static volatile boolean flag=true;如果为false时,便跳出死循环。

kill -3 pid

如果进程卡死,你需要记录当时的事故现场,那么应该用 kill -3 来记录事故现场的信息然后退出。

可能是我接触的项目比较少,这种情况很少遇到。

kill -9 pid

这个用到的比较多,比如我们使用spring boot时,直接使用kill -9 pid来杀死JVM进程,比如 kill -9 test.jar,这种情况有利有弊。

优点

可以快速关掉JVM,但前提是知道JVM进程中没有用户线程,只剩下了守护线程,

缺点

正因为可以快速关闭JVM,这也容易造成数据的不安全性,也就是上文所说的数据丢失。

启动项目

war包结尾

这种多见于spring MVC的项目

Tomcat的bin目录

Linux项目

sh startup.sh

./startup.sh

window项目

单机startup.bat即可

jar包结尾

这是多见于spring boot的项目

java -jar 项目名

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值