我怎样才能杀死使用端口8080的任何进程,这样我就可以流浪了?

时间:2014-06-24 13:06:48

标签: macos networking vagrant

在MacOSX上,我使用Packer来构建一个Vagrant盒子,所以我需要不断提起它并将其拆除。我正在尝试流浪'并因为端口正在使用而收到标准错误:

" Vagrant无法转发此VM上的指定端口,因为它们会与已在这些端口上侦听的其他应用程序发生冲突。转发到8080的端口已在主机上使用。"

解决方案似乎很简单:我只需要确定将端口8080保持打开并终止该进程的进程,对吧?这并不容易。


如果我运行命令:

nmap localhost -p 8080

我收到以下输出:

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的任何进程,以便我可以在不重新启动计算机的情况下进行流浪?

13 个答案:

答案 0 :(得分:99)

这可能会有所帮助

lsof -n -i4TCP:8080 

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

或尝试:

lsof -i -P

答案 1 :(得分:40)

快速快速的解决方案:

lsof -n -i4TCP:8080

PID是第二个字段。然后,杀死这个过程:

kill -9 PID

不太快但永久的解决方案

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

  2. 制作名为stop的文件。将以下代码粘贴到其中:

  3. #!/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. 保存此文件。现在,转到终端并写入stop 8888(或任何端口)

答案 2 :(得分:20)

如果上述接受的答案无效,请尝试以下解决方案。 您可以将它用于端口8080或任何其他端口。

sudo lsof -i tcp:3000 

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

sudo kill -9 PID

PID是您要杀死的进程ID。

以下是mac Terminal上的命令输出。

Command output

答案 3 :(得分:3)

我需要运行此命令

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)

显示哪个服务正在使用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

要卸载cisco web安全代理运行

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

信用到:http://tobyaw.livejournal.com/315396.html

答案 4 :(得分:2)

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

中删除

答案 5 :(得分:2)

sudo lsof -i:8080

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

kill -9 <PID Number>

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

答案 6 :(得分:1)

运行:nmap -p 8080 localhost(如果您的系统上还没有安装带有MacPorts或Homebrew的nmap)

  

localhost(127.0.0.1)的Nmap扫描报告

     

主机已启动(延迟时间为0.00034秒)。

     

localhost的其他地址(未扫描)::: 1

     

港口国服务

     

8080 / tcp打开http-proxy

运行:ps -ef | grep http-proxy

  

UID PID PPID C STIME TTY TIME CMD

     

640 99335 88310 0 12:26 pm ttys002 0:00.01 grep http-proxy“

运行:ps -ef 640(用您的UID替换501)

  

/System/Library/PrivateFrameworks/PerformanceAnalysis.framework/Versions/A/XPCServices/com.apple.PerformanceAnalysis.animationperfd.xpc/Contents/MacOS/com.apple.PerformanceAnalysis.animationperfd

mac osx上的端口8080由installed with XCode SDK

使用

答案 7 :(得分:1)

为此编写脚本:

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

-t参数使lsof的输出为“ terse”,这意味着它仅返回PID。

答案 8 :(得分:1)

使用以下命令:

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

将使用kill -9强制选择并杀死端口8080的进程ID。

答案 9 :(得分:1)

我需要杀死不同端口上的进程,所以我创建了一个bash脚本:

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

只需将其添加到您的.bashrc中,然后像这样运行它:

killPort 8080

您可以传递任何您想要的端口号

答案 10 :(得分:0)

您还可以使用活动监视器使用端口识别和退出该过程。

答案 11 :(得分:0)

尝试netstat

netstat -vanp tcp | grep 3000

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

sudo lsof -i tcp:3000 

对于Centos 7使用

netstat -vanp --tcp | grep 3000

答案 12 :(得分:0)

参考@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"