netstat -ntl查找进程 ps -eaf 来搜索java、Tomcat进程 kill kill -3 kill -9 java -jar还是 ./startup.up

导读:本篇文章讲解 netstat -ntl查找进程 ps -eaf 来搜索java、Tomcat进程 kill kill -3 kill -9 java -jar还是 ./startup.up,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

查找项目

不知道项目名和端口号

 ps -eaf | grep tomcat 
 ps -eaf | grep java

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

ps -eaf | grep 项目名

知道端口号,不知项目名

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

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

项目名称

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

netstat -ntlp

netstat -ntlp 查询端口号

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

关闭项目

关闭命令

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

kill命令的格式是 kill -Signal pid,其中 pid 就是进程的编号,signal是发送给进程的信号。

参考文档

默认参数下,kill 发送 SIGTERM(15)信号给进程,告诉进程,你需要被关闭,请自行停止运行并退出,有时,我们还会传SIGTERM(3)和SIGTERM(9)信号给进程:

kill、kill -9、kill -3的区别

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 项目名

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/99234.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!