我试图在命令行中为ubuntu中的特定端口终止进程。

如果我运行此命令,我将获得端口:

sudo lsof -t -i:9001

所以…现在我想跑:

sudo kill 'sudo lsof -t -i:9001'

我收到以下错误消息:

ERROR: garbage process ID "lsof -t -i:9001".
Usage:
  kill pid ...              Send SIGTERM to every process listed.
  kill signal pid ...       Send a signal to every process listed.
  kill -s signal pid ...    Send a signal to every process listed.
  kill -l                   List all signal names.
  kill -L                   List all signal names in a nice table.
  kill -l signal            Convert between signal numbers and names.

我也尝试过杀“lsof-t-I:9001”


当前回答

xargs是一个非常有用的命令。

您可以使用这样的管道命令

lsof -t -i :9001 | xargs sudo kill

它的作用:它接受第一个命令的输出,在本例中是在端口上运行的进程,并将其传递给sudokill。

其他回答

有些进程没有使用正常的netstat命令显示,因此您必须使用sudo检查它。

执行sudo netstat-lpn | grep:8080。系统运行的进程不显示PID,要获取此进程的PID,必须使用sudo运行它

然后使用端口8080终止进程。你可能也必须在这里使用sudo。因此,要终止此进程,请使用sudo kill-9 PID

你可以使用

fuser -n tcp -k 9001 

在维基百科中查看更多详细信息

获取端口3000上运行的进程的PID:lsof-i tcp:3000压井工艺kill-9进程id

例子:lsof-i tcp:3000(输出PID=5805)杀死-9 5805

如果需要,使用sudo

为了首先终止基于端口的进程,我们必须找到给定端口的相关pid,

在我的例子中,我想获得3000端口的pid(进程id):

netstat -ltnp | grep -w '3000'

然后找到正在侦听tcp的pid

tcp6       0      0 :::3000                 :::*                    LISTEN      29972/node  

你会得到pid 29972

要终止此pid,请使用以下命令

kill -9 29972

基于端口的kill进程伪码

 netstat -ltnp | grep -w 'PORT'

and

kill -9 PID

显示活动的TCP连接、计算机正在侦听的端口。

netstat -tupln

它将列出pid中的所有连接。查找并复制pid,然后运行以下命令。确保在以下命令中将替换为实际id。

kill -9 <copied pid>

-9用于强制终止连接。