作者 / 以码为梯
排版 / 以码为梯
文章字数 / 529
阅读时长 / 2分钟
本文属于平时工作所遇问题记录
由于公司所做项目的特殊性,在正式上线之前都需要到指定的三方测试机构去进行测试,在测试通过之后方可正式线上部署。
最近在提测之后有一个使用tomcat部署的服务,每次现场部署人员将服务部署好后,一旦xshell被第三方测试人员强制断开,刚刚启动好的服务进程就会被*掉,让人百思不得其解。
最终,在通过查看系统日志以及历史命令的过程中看到了以下操作。
pkill
其中命令w跟命令who效果差不多,可以列举当前所有登录信息以及其终端号。
pkill -kill -t pts/0
pkill -kill -t pts/3
pkill -kill -t pts/4
以上三个命令是将连接机器的三个终端强行断开会话。
最终通过复现的方式发现服务进程被*掉就是因为这个pkill命令导致的,这个命令会将通过这个会话连接的场景的进程一并给*掉。
那我们可以通过什么样的方式才能既删除会话又不影响会话相关的进程呢?
我们可以通过下面的操作来完成:
// 找到连接的会话
who
// 过滤出bash进程
ps -ef | grep bash
// 将bash进程与会话连接对应的进行*掉
kill -9 pid
不知道大家在平时开发运维过程中有没有遇到这样的问题,有的话希望大家可以说说当时是怎么解决的,没有话希望大家可以从中学到一些内容。
最后关于该场景的复现视频可以在个人主页中查看。