如何杀死使用端口8080的任何进程,以便我可以向上移动?

在 MacOSX 上,我正在使用 Packer 来构建一个流浪者盒子,所以我需要不断地将它提出来并拆除它。我正在尝试“向上移动”,并收到标准错误,因为端口正在使用:

”流浪者不能在这个 VM 上转发指定的端口,因为它们会与已经监听这些端口的其他应用程序发生冲突。转发到8080的端口已经在主机上使用。”

The solution seems simple enough: I just need to identify the process that is holding port 8080 open and kill that process, right?. It's not that easy.


如果我运行命令:

nmap localhost -p 8080

I receive the following output:

PORT     STATE SERVICE
8080/tcp open  http-proxy

如果运行以下命令:

top -o prt

1360年使用的最高端口


如果运行以下命令:

 netstat -tulpn | grep :8080

我收到:

netstat: n: unknown or uninstrumented protocol

如果运行以下命令:

lsof -i :8080

我没有收到任何输出


如果我重新启动我的电脑,端口现在是可用的,我现在可以’游荡上’。

如何杀死正在使用端口8080的任何进程,以便在不重新启动计算机的情况下进行漫游?

372250 次浏览

这个可能会有帮助

lsof -n -i4TCP:8080

PID 是输出中的第二个字段。

或者试试:

lsof -i -P

快速解决方案:

lsof -n -i4TCP:8080

PID是第二个字段。然后,终止该进程:

kill -9 PID

虽然速度不快,但却是永久性的解决方案

  1. 转到 /usr/local/bin/(可以在 finder 中使用 command + shift + g)

  2. 制作一个名为 stop的文件,粘贴以下代码:

#!/bin/bash
touch temp.text
lsof -n -i4TCP:$1 | awk '{print $2}' > temp.text
pidToStop=`(sed '2q;d' temp.text)`
> temp.text
if [[ -n $pidToStop ]]
then
kill -9 $pidToStop
echo "Congrates!! $1 is stopped."
else
echo "Sorry nothing running on above port"
fi
rm temp.text
  1. 保存这个文件。
  2. 使文件可执行 chmod 755 stop
  3. 现在,转到终端并写入 stop 8888(或任何端口)

您还可以使用活动监视器来标识和退出使用端口的进程。

运行: nmap -p 8080 localhost(如果系统上还没有安装 nmap,请使用 MacPorts 或 Homebrew 安装 nmap)

本地主机的 Nmap 扫描报告(127.0.0.1)

主机已启动(0.00034 s 延迟)。

本地主机的其他地址(未扫描) : : 1

PORT STATE SERVICE

8080/tcp 开放 http-代理

运行: ps -ef | grep http-proxy

时间

6409933588310012:26 pm ttys0020.00.01 grep http-xy”

Run: ps -ef 640 (replace 501 with your UID)

/System/Library/PrivateFramework/PerformanceAnalysis.Framework/Versions/A/XPCServices/com.apple. PerformanceAnalysis.animationperd.xpc/content/MacOS/com.apple. PerformanceAnalysis.animationperd

Mac osx 上的端口8080被某些 安装了 XCodeSDK使用

可以是 Cisco AnyConnect。 检查/Library/LaunchDaemons/com.cisco.anyConnect.vpnagentd.plist 是否存在,然后用 launchctl 卸载它,并从/Library/LaunchDaemons 中删除

我需要运行这个命令

sudo lsof -i :80 # checks port 8080

然后我得到了

COMMAND   PID USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
acwebseca 312 root   36u  IPv4 0x34ae935da20560c1      0t0  TCP 192.168.1.3:50585->104.25.53.12:http (ESTABLISHED)

show which service is using the PID

ps -ef 312

然后我得到了这个

  UID   PID  PPID   C STIME   TTY           TIME CMD
0   312    58   0  9:32PM ??         0:02.70 /opt/cisco/anyconnect/bin/acwebsecagent -console

卸载思科网络安全代理运行

sudo /opt/cisco/anyconnect/bin/websecurity_uninstall.sh

片名: http://tobyaw.livejournal.com/315396.html

如果上面接受的答案不起作用,尝试下面的解决方案。 您可以将其用于端口8080或任何其他端口。

sudo lsof -i tcp:3000

用您想要的任何端口替换3000。运行以下命令来终止该进程。

sudo kill -9 PID

PID 是要杀死的进程 ID。

下面是 Mac 终端上命令的输出。

Command output

为了编写剧本:

pid=$(lsof -ti tcp:8080)
if [[ $pid ]]; then
kill -9 $pid
fi

The -t argument makes the output of lsof "terse" which means that it only returns the PID.

试试 Netstat

netstat -vanp tcp | grep 3000

如果您的 netstat 不支持-p,请使用 lsa

sudo lsof -i tcp:3000

用于森托斯7号

netstat -vanp --tcp | grep 3000
sudo lsof -i:8080

通过运行上面的命令,您可以看到正在运行的所有作业。

kill -9 <PID Number>

输入 PID (进程标识号) ,这样将终止/杀死实例。

Use the following command:

lsof -n -i4TCP:8080 | awk '{print$2}' | tail -1 | xargs kill -9

端口8080的进程 id 将被强制使用 kill -9选择和终止。

I needed to kill processes on different ports so I created a bash script:

killPort() {
PID=$(echo $(lsof -n -i4TCP:$1) | awk 'NR==1{print $11}')
kill -9 $PID
}

只要把它添加到你的.bashrc 中,然后像这样运行它:

killPort 8080

您可以传递任何您希望的端口号

在参考了@voutasaurus 的解决方案之后。我编写这个实用程序是为了简化杀死端口上运行的所有进程的过程。

killProcessesUsing3000 () {
pid=$(lsof -ti :3000)  # The -t argument makes the output of lsof "terse" (Brief) which means that it only returns the PID.
# PID contains process processes that run on the 3000 port. In new lines if they are multiples
for num ($=pid) {
echo $num
kill -9 $num
}
}


#Alias
alias kill3000="killProcessesUsing3000"

对我来说,这很管用

打开你的 Mac 终端

kill $(lsof -t -i:8080)

Explanation:

lsof -t返回 PID 并将其传递给 kill。

我尝试了以上的许多方法,但都不适合我。

After many hours, I found this one liner:

# kill 8080
alias nuke88="lsof -i tcp:8080 | grep LISTEN | awk '{print \$2}' | xargs kill"


# kill 3000
alias nuke3k="lsof -i tcp:3000 | grep LISTEN | awk '{print \$2}' | xargs kill"