关闭本地主机上侦听的端口

关闭本地主机上侦听的端口

在 CentOS7 中如何关闭本地主机上侦听的端口?到目前为止我已经使用下面的命令来查找进程ID

sudo netstat -tlpn | grep 5601

然后,使用以下命令终止该进程,但它会以新的进程 ID 启动。

sudo kill -SIGTERM 29565

请帮忙。

在此输入图像描述

答案1

欢迎来到 Unix 和 Linux StackExchange!

您的图片表明,当您使用 SIGTERM 杀死当前占用端口的进程时,一个新进程将取代它。因此,要么systemd配置为在进程被杀死时自动重新启动进程,要么持有端口的进程只是主要服务器应用程序的“工作”子进程。

有问题的进程的名称似乎是node根据您的netstat -tlpn输出。因此,我首先尝试检查是否存在这样命名的系统服务:

systemctl | grep -i node

一旦知道服务的确切名称(例如node.service),您可以使用以下命令停止服务:

systemctl stop node.service

如果结果证明是错误的,请重新启动

systemctl start node.service

一旦您确认已停止正确的服务,您可能需要禁用该服务,以便它不会在下次系统重新启动时自动启动:

systemctl disable node.service

答案2

要搜索侦听特定端口的进程,请使用 lsof 或“列出打开的文件”。

lsof

查找在特定端口上运行的进程-i过滤选项

lsof -i TCP:[PORT]

lsof -i TCP:5601

杀死在特定端口上侦听的所有进程 该-t命令仅返回 PID,精确用于管道,并xargs在返回的每行上使用。

lsof -ti tcp:[PORT] | xargs kill

lsof -ti tcp:5601 | xargs kill

如果进程更加持久,并且终止不起作用,请尝试kill -9 [PID]更积极地终止它。

参考

查找(并终止)端口上列出的所有进程

Linux 中的 10 个 lsof 命令示例

相关内容