Centos服务器怎样查看端口是否被占用,被占用的端口进程ID不断地变怎么结束(杀死)?

2021-03-15 11:03:59 浏览数 (1)

在Linux服务器中,经常会以php-cli方式运行一些后台服务,例如swoole, workmanWebSocket框架的服务,当这些服务出现了异常要结束或重启时,很多人可能会找不到当时的运行物理路径或物理路径已经不存在了(例如是进入了部署目录里启动的,但因为发布了新版本,所以原来的部署目录文件夹被覆盖或清理,已经不存在了),这样就无法通过常规的方式去停止服务,只能先找到进程id,然后用kill -9 进程ID的方式来结束。

很多人会首先想到通过使用的端口来查找进程id,常用的命令如:netstat -tunpl | grep 端口号lsof -i :端口号,这样确实能找到当前占用端口的进程ID,但当执行kill -9 进程ID时发现会提示进程id不存在,再执行netstat -tunpl | grep 端口号命令会发现,显示出来的端口号确实与上次的不一样了,这是为什么呢?

原来我们所看到的子进程,是由主进程(master,亦称为守护进程)维护的,所以要达到停止进程的目的,要找到主进程的id,再执行kill命令,就能彻底结束掉这个服务了,具体怎么做呢?

可以使用查找进程的命令:ps -aux | grep php,系统会列出当前所有的php进程,如下图所示:

其中有一列会详细列出进程类型(master)及cli进程的启动文件,这个非常有用,能快速地根据启动目录和文件名找到我们想找的服务,然后调用 kill -9 进程ID,就能将服务彻底结束掉了。

0 人点赞