netstat -tulnap
显示正在使用哪些端口。如何在Linux中释放一个端口?
像其他人说的那样,您需要终止所有正在侦听该端口的进程。最简单的方法是使用fuser(1)
命令。例如,要查看在端口80上侦听HTTP请求的所有进程(作为 root 运行或使用 sudo
):
# fuser 80/tcp
如果你想杀死它们,那么只需添加-k
选项。
要在Linux中杀死特定的端口,请使用以下命令
sudo fuser -k Port_Number/tcp
将Port_Number
替换为您占用的端口。
在终端中输入:
netstat -anp | grep "port_number"
它将显示端口的详细信息。转到最后一列。格式如下,例如:- PID / java
然后执行:
kill -9 PID
若为MAC系统:
lsof -n -i :'port-number' | grep LISTEN
示例响应:
java 4744 (PID) test 364u IP0 asdasdasda 0t0 TCP *:port-number (LISTEN)
然后执行:
kill -9 PID
使用 MacBook 工作
sudo netstat
来实际查看 PID :) - Anentropic检查所有端口:
netstat -lnp
关闭打开的端口:
fuser -k port_no/tcp
示例:
fuser -k 8080/tcp
在这两种情况下,如果需要,您可以使用sudo
命令。
您可以使用tcpkill
(dsniff
软件包的一部分)来关闭所需端口上的连接:
sudo tcpkill -9 port PORT_NUMBER
"netstat --programs"
命令会提供进程信息,假设你是 root
用户。然后你需要终止可能会重新启动的“有问题”的进程,这很可能只是为了让你烦恼。
根据占用这些端口的进程不同,解决该问题的方案也会有所不同,具体取决于你实际想要 达到 的目标。例如,你可能需要禁用服务(如果它们不需要)或配置它们使用其他端口(如果你确实需要它们但是需要该端口更多)。
如果你真的想立即终止一个进程,可以发送一个 KILL 信号而不是 TERM 信号(后者是停止请求,前者将立即生效而无需任何清理)。这很容易实现:
kill -KILL <pid>
请注意,停止程序时,根据您正在停止的程序,其状态可能会严重损坏。通常情况下,只有在正常终止无法工作时才需要发送KILL信号。我想知道您尝试解决的潜在问题是什么,以及杀死进程是否是正确的解决方案。
我认为唯一的方法就是停止打开该端口的进程。
sudo killall -9 "进程名"
sudo yum install psmisc
)。 - Marlon Bernardeskill -9 $(fuser 80/tcp 2>/dev/null)
- Hanynowsky