如何在 Linux 中删除在特定端口上运行的进程

如何在 Linux 中删除在特定端口上运行的进程,第1张

以 80 端口为例。

首先,列出任何监听端口 80 的进程

使用 kill 命令删除任何监听端口 80 的进程:

或使用 fuser 命令:

最近在linux服务器上部署应用,总是出现端口被占用的情况,有时关闭软件,kill进程也会出现端口占用。

下面以80端口为例,列出详细解决过程

1.查找被占用的端口

 COMMAND   PID   USER   FD   TYPE   DEVICE    SIZE/OFF    NODE      NAME

   Java             14576  root     36u   IPv6    35452317    0t0         TCP *:pcsync-https (LISTEN)

  # netstat -anp 查看端口使用情况

  # netstat -anp | grep 80 只查看端口80的使用情况

2.查看端口属于哪个程序?端口被哪个进程占用

3. 杀掉占用端口的进程

前提:首先你必须知道,端口不是独立存在的,它是依附于进程的。某个进程开启,那么它对应的端口就开启了,进程关闭,则该端口也就关闭了。下次若某个进程再次开启,则相应的端口也再次开启。而不要纯粹的理解为关闭掉某个端口,不过可以禁用某个端口。

1. 可以通过"~$ netstat -anp" 来查看哪些端口被打开。

(注:加参数'-n'会将应用程序转为端口显示,即数字格式的地址,如:nfs->2049, ftp->21,因此可以开启两个终端,一一对应一下程序所对应的端口号)

2. 然后可以通过"~$ lsof -i:$PORT"查看应用该端口的程序($PORT指对应的端口号)。或者你也可以查看文件/etc/services,从里面可以找出端口所对应的服务。

(注:有些端口通过netstat查不出来,更可靠的方法是"~$ sudo nmap -sT -O localhost")

3. 若要关闭某个端口,则可以:

1)通过iptables工具将该端口禁掉,如:

"~$ sudo iptables -A INPUT -p tcp --dport $PORT -j DROP"

"~$ sudo iptables -A OUTPUT -p tcp --dport $PORT -j DROP"

2)或者关掉对应的应用程序,则端口就自然关闭了,如:

"~$ kill -9 PID" (PID:进程号)

如: 通过"~$ netstat -anp | grep ssh"

有显示: tcp 0 127.0.0.1:2121 0.0.0.0:* LISTEN 7546/ssh

则: "~$ kill -9 7546"

(可通过"~$ chkconfig"查看系统服务的开启状态)

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/yjier/archive/2011/05/25/6444198.aspx


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7507928.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-06
下一篇 2023-04-06

发表评论

登录后才能评论

评论列表(0条)

保存