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

Jas*_*ran 67 macos networking vagrant

在MacOSX上,我正在使用Packer来构建一个Vagrant盒子,因此我需要不断地将其打开并将其拆除.我试图'流浪',并收到标准错误,因为端口正在使用:

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

解决方案似乎很简单:我只需要确定将端口8080保持打开并终止该进程的进程,对吧?那并没那么简单.


如果我运行命令:

nmap localhost -p 8080
Run Code Online (Sandbox Code Playgroud)

我收到以下输出:

PORT     STATE SERVICE
8080/tcp open  http-proxy
Run Code Online (Sandbox Code Playgroud)

如果我运行以下命令:

top -o prt
Run Code Online (Sandbox Code Playgroud)

1360年使用的最高港口


如果我运行以下命令:

 netstat -tulpn | grep :8080
Run Code Online (Sandbox Code Playgroud)

我收到:

netstat: n: unknown or uninstrumented protocol
Run Code Online (Sandbox Code Playgroud)

如果我运行以下命令:

lsof -i :8080
Run Code Online (Sandbox Code Playgroud)

我没有收到任何输出


如果我重新启动计算机,该端口现在可用,我现在可以"流浪"了.

如何杀死使用端口8080的任何进程,以便我可以在不重新启动计算机的情况下流浪?

Mar*_*ell 121

这可能有所帮助

lsof -n -i4TCP:8080 
Run Code Online (Sandbox Code Playgroud)

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

或尝试:

lsof -i -P
Run Code Online (Sandbox Code Playgroud)

  • 然后当然是`$ kill processId` (5认同)
  • 谢谢马克!无论出于何种原因,在重新启动计算机后,lsof命令没有输出任何内容,现在它们就是.现在,所有3个lsof命令都正常工作,我可以识别进程ID并使用以下命令将其终止:sudo kill -9 000 ...其中000是进程ID.该过程的名称是"VBoxHeadless".如果我得到更多关于它之前没有工作的信息,我会报告回来.仅供参考:我没有连接打印机. (3认同)

小智 59

快速快速的解决方案:

lsof -n -i4TCP:8080

PID是第二个字段.

PID

不太快但永久的解决方案

1.)转到/ usr/local/bin /(可以在finder中使用命令+ 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
Run Code Online (Sandbox Code Playgroud)

3.)保存文件.Enjoyyy !!.转到终端并写入stop 8888(或任何端口)

你可以从目录中的任何地方编写这个命令(停止端口).

  • 我尝试了永久解决方案,但是在尝试运行脚本时收到“权限被拒绝”。通过首先运行“ chmod 755 stop”来解决。 (2认同)

Aks*_*rve 25

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

sudo lsof -i tcp:3000 
Run Code Online (Sandbox Code Playgroud)

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

sudo kill -9 PID
Run Code Online (Sandbox Code Playgroud)

PID是您要杀死的进程ID.

下面是mac终端上的命令输出.

命令输出

  • 我会先尝试常规杀死(不是 -9)。-9 选项可能导致套接字未正确关闭。该进程可能会被终止,但另一个侦听器将在其位置分叉。 (2认同)

小智 8

使用以下命令:

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

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


vou*_*rus 6

要编写此脚本:

pid=$(lsof -ti tcp:8080)
if [[ $pid ]]; then
  kill -9 $pid
fi
Run Code Online (Sandbox Code Playgroud)

-t参数使 lsof 的输出“简洁”,这意味着它只返回 PID。


vis*_*kar 5

sudo lsof -i:8080
Run Code Online (Sandbox Code Playgroud)

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

kill -9 <PID Number>
Run Code Online (Sandbox Code Playgroud)

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


Cur*_*urt 5

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

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

只需将它添加到您的 .bashrc 并像这样运行它:

killPort 8080
Run Code Online (Sandbox Code Playgroud)

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