我正试图在命令行中为 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.
我也试过
sudo kill 'lsof -t -i:9001'
您想使用反引号,而不是常规勾号:
sudo kill -9 `sudo lsof -t -i:9001`
如果这不起作用,您也可以使用
$()
进行命令插值:
sudo kill -9 $(sudo lsof -t -i:9001)
对于 Ubuntu 1- 找到正在使用 pro 的应用程序/进程,键入:
sudo netstat -lpn |grep :8080
然后按 Enter。
你会得到类似于这个的输出
tcp6 0 0 :::8080 :::* LISTEN 6782/java
2- 我得到进程 ID,它是 6782,现在这是使用端口 8080 的进程。
3- 终止进程,输入:kill -p 6782
kill -9 6782
在 Ubuntu 终端中关闭端口的最佳方法是使用
fuser
命令;例如:
fuser -k 9001/tcp
默认发送
SIGKILL
。
有一些进程使用普通的 netstat 命令没有显示,所以你必须使用
sudo
来检查它。
做
sudo netstat -lpn |grep :8080
。系统运行的进程不显示 PID,要获取此进程的 PID,您必须使用 sudo
运行它
然后使用端口
8080
终止进程。您可能还需要在这里使用sudo
。所以要杀死这个过程使用sudo kill -9 PID
杀死在端口号9001
上运行的process
sudo kill -9 $(sudo lsof -t -i:9001)
lsof - list of files(Also used for to list related processes)
-t - show only process ID
-i - show only internet connections related process
:9001 - show only processes in this port number
kill - command to kill the process
-9 - forcefully
sudo - command to ask admin privilege(user id and password).
更多你可以访问我的blog
使用killport命令:
sh killport 9001
要下载 shell,您可以使用
wget
:
wget https://cdn.rawgit.com/abdennour/miscs.sh/e0aac343/killport
首先要根据端口终止进程,我们必须找出给定端口的相关 pid 并使用该 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'
和
kill -9 PID
killport <port>
在您的 CLI 中添加此代码并使用此别名。
killport () {
PID=$(sudo lsof -t -i:$1)
sudo kill -9 ${PID}
}
sudo kill -9 $(sudo lsof -t -i:9001)
为我工作或
你可以使用
sudo kill -9 `sudo lsof -t -i:9001`
将 9001 替换为您想要的端口号。
使用这个:
sudo kill -9 $(lsof -t -i:9001)
只需在终端中输入以下命令
kill -9 $(lsof -t -i:3000)
杀死端口:
sudo
对于显示进程id很重要。
$ sudo netstat -antlp | grep 45136
tcp 0 0 0.0.0.0:45136 0.0.0.0:* LISTEN **-**
$ kill -9 45136
使用命令
netstat -plten |grep java
使用 grep java 因为 tomcat 使用 java 作为他们的进程。
它将显示带有端口号和进程 ID 的进程列表
tcp6 0 0 :::8080 :::* LISTEN
1000 30070621 16085/java
/java 之前的数字是进程号。现在使用 kill 命令终止进程
kill -9 16085
-9 表示进程将被强行杀死。
如果我是你,我会用
fuser -k -n tcp PORT
kill -9 PID
您可以在终端中使用以下命令
fuser -k 3000/tcp
试试这个:
lsof -i :port
or
sudo kill $(sudo lsof -t -i:8000)
or
kill -9 <pid>
or
sh killport 8000
它给了我一个错误
OSError: [Errno 98] Address already in use
。使用以下方法解决了我在 Ubuntu 中的错误。(VERSION="18.04.4 LTS (Bionic Beaver)"
)
$ sudo netstat -lpn |grep :5000
tcp 0 0 0.0.0.0:5000 0.0.0.0:* LISTEN 25959/uwsgi
$ fuser -k -n tcp 5000
5000/tcp: 25959
希望它能帮助别人!
sudo kill `sudo lsof -t -i:9001`
您不必添加
-9
信号选项
xargs
可以是一个非常有用的命令。
你可以像这样传递命令
lsof -t -i :9001 | xargs sudo kill
它的作用: 它获取第一个命令的输出,在本例中是在端口上运行的进程,并将其传递给
sudo kill
.
获取在端口 3000 上运行的进程的 PID:
lsof -i tcp:3000
杀死进程
kill -9 process_id
例子:
lsof -i tcp:3000
kill -9 5805
如果需要,请使用
sudo
只需为您的
.bashrc
/ .zshrc
添加别名:
alias kp='sudo kill -9 `sudo lsof -t -i: "$1"`'
它的两个步骤过程:
杀死 id 8689 的进程(可以不同)
fuser -n tcp 8080
#o/p 8080/tcp 8689
kill -9 8689
你可以使用 node
来解决这个问题npm install freethenport -g
然后
node freethenport 9001
显示活动的 TCP 连接,计算机正在侦听的端口。
netstat -tupln
它会列出你所有的 pid 连接。查找并复制 pid 并运行以下命令。确保在以下命令中将 替换为实际 ID。
kill -9 <copied pid>
-9 用于强行终止连接。
当使用较新版本的 Ubuntu 时,您将不再有
netcat
,而是使用 ss
ss -lptpn | grep 9001
sudo kill <replace-with-process-id>
sudo netstat -lpn |grep :8080
比得到这个进程的PID
杀 -9
你也可以使用 xargs。只需运行以下命令,
sudo lsof -t -i:443 | xargs sudo kill -9
在我的 ubuntu-22.04 机器上,这适用于端口 8000
fuser -k 8000/tcp