我尝试使用./shutdown.sh
from tomcat/bin
目录关闭 tomcat。但是发现服务器没有正常关闭。因此我无法重新启动
我的 tomcat 正在端口上运行8080
。
我想杀死运行在8080
. 我首先想要在特定端口(8080)上运行的进程列表,以便选择要杀死的进程。
我尝试使用./shutdown.sh
from tomcat/bin
目录关闭 tomcat。但是发现服务器没有正常关闭。因此我无法重新启动
我的 tomcat 正在端口上运行8080
。
我想杀死运行在8080
. 我首先想要在特定端口(8080)上运行的进程列表,以便选择要杀死的进程。
这fuser 8080/tcp
将打印您绑定在该端口上的进程的 PID。
这fuser -k 8080/tcp
将终止该过程。
仅适用于 Linux。更普遍的是使用lsof -i4
(或 6 用于 IPv6)。
要列出侦听端口 8080 的任何进程:
lsof -i:8080
要杀死监听端口 8080 的任何进程:
kill $(lsof -t -i:8080)
或更猛烈地:
kill -9 $(lsof -t -i:8080)
(-9
对应于SIGKILL - terminate immediately/hard kill
信号:请参阅终止信号列表和kill 命令中 -9 选项的目的是什么?。如果没有指定信号到kill
,则发送 TERM 信号,也-15
就是soft kill
发送,有时不足以杀死一个过程。)。
使用命令
sudo netstat -plten |grep java
用作它们的过程grep java
的tomcat
用途。java
它将显示带有端口号和进程 ID 的进程列表
tcp6 0 0 :::8080 :::* LISTEN
1000 30070621 16085/java
前面的数字/java
是进程 ID。现在使用kill
命令杀死进程
kill -9 16085
-9
意味着该进程将被强制终止。
选项 1单线只杀死特定端口上的 LISTEN:
kill -9 $(lsof -t -i:3000 -sTCP:LISTEN)`
选项 2如果您安装了 npm,您也可以运行
npx kill-port 3000
一个班轮
kill -9 $(lsof -t -i tcp:8080)
此处的说明:使用lsof
和的组合kill
root@localhost:~# lsof -i tcp:8080
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 23672 sine 238u IPv6 3028222 0t0 TCP localhost:http-alt (LISTEN)
选择pid并使用kill
kill 23672
您可以使用 lsof 命令。让这里的端口号是 8090
lsof -i:8090
此命令返回此端口上打开的进程列表。
像……</p>
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
ssh 75782 eoin 5u IPv6 0x01c1c234 0t0 TCP localhost:8090 (LISTEN)
要释放端口,请杀死使用它的进程(进程 ID 为 75782)...</p>
kill -9 75782
这个对我有用。这是原始帖子的链接:link
如果要杀死在端口号 8080 上运行的进程,则首先需要找到 8080 端口的进程标识号(PID),然后将其杀死。运行以下命令查找 8080 端口号 PID:
sudo lsof -t -i:8080
这里,
因此,您现在可以使用以下命令轻松杀死您的 PID:
sudo kill -9 <PID>
这里,
您可以使用以下命令使用一个命令来终止特定端口上的进程:
sudo kill -9 $(sudo lsof -t -i:8080)
有关更多信息,您可以查看以下链接 How to kill a process on a specific port on linux
杀死特定端口上所有进程的最佳方法;
kill -9 $(sudo lsof -t -i:8080)
这会将运行的所有内容的进程 ID 打印到标准输出<port_number>
:
fuser -n tcp <port_number>
它还会将一些内容打印到 stderr,因此:
fuser -n tcp <port_number> 2> /dev/null
然后我们可以将这些进程 ID 提供给kill
命令:
sudo kill $(fuser -n tcp <port_number> 2> /dev/null)
如果你经常这样做,你也可以把它放在一个函数中:
function killport() {
sudo kill $(fuser -n tcp $1 2> /dev/null)
}
要知道在特定端口上运行的服务的 pid:
netstat -tulnap | grep :*port_num*
您将获得该过程的描述。现在使用 kill 或 kill -9 pid。很容易被杀死。
例如
netstat -ap | grep :8080
tcp6 0 0 :::8080 :::* LISTEN 1880/java
现在:
kill -9 1880
请记住将所有命令运行为root
获取任务的PID并杀死它。
lsof -ti:8080 | xargs kill
首先你需要做的是运行(替换为你的端口号):
fuser -k 3000/tcp
这将释放端口。运行上述命令后运行:
service docker restart
你的问题就解决了。
试试这样
sudo fuser -n tcp -k 8080
选择端口号并在netstat命令中应用 grep,如下所示
netstat -ap | grep :7070
控制台输出
tcp 0 0 :::7070 :::* LISTEN 3332/java
根据PID(进程标识号)杀死服务
kill -9 3332
lsof -i tcp:8000
该命令列出运行在 8000 端口的进程信息
kill -9 [PID]
该命令杀死进程
Linux:如果您知道端口,则可以使用此命令:
netstat -plten | grep LISTEN | grep 8080
艾克斯:
netstat -Aan | grep LISTEN | grep 8080
然后取第一列(例如:f100050000b05bb8)并运行以下命令:
rmsock f100050000b05bb8 tcpcb
杀死进程。
Linux:首先,如果您知道端口,则可以找到此命令的 PID:
netstat -tulpn
例子:-
Local Address Foreign Address State PID/Program name
:::3000 :::* LISTEN 15986/node
然后,您执行 kill 过程。运行以下命令:
杀死 -9 PID
示例:-
杀死-9 15986
运行以下命令查找 8080 端口号 PID:
须藤 lsof -t -i:8080
您现在可以使用以下命令轻松杀死您的 PID:
须藤杀 -9
您可以使用以下命令使用一个命令来终止特定端口上的进程:
sudo kill -9 $(sudo lsof -t -i:8000)
您可以知道系统中运行的所有端口的列表及其详细信息(pid、地址等):
netstat -tulpn
您可以通过在以下命令中提供端口号来了解特定端口号的详细信息:
sudo netstat -lutnp | grep -w '{port_number}'
例如:sudo netstat -lutnp | grep -w '8080' 详细信息将像这样提供:
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
如果你想使用 pid 杀死一个进程,那么:kill -9 {PID}
如果您想使用端口号终止进程:fuser -n tcp {port_number}
sudo
如果您无法访问任何内容,请使用。
这将杀死在端口 80 上运行的程序
sudo fuser -k 80/tcp
kill -9 `fuser 8080/tcp|xargs -n 1`
,此命令还会杀死使用 TCP 连接侦听端口 8080 的进程
只需运行此命令。不要忘记portnumber
用您的端口替换 , ;)
kill -9 $(sudo lsof -t -i:portnumber)
sudo apt-get install psmisc (or sudo yum install psmisc)
sudo fuser 80/tcp
结果:80/tcp:1858 1867 1868 1869 1871
一一杀死进程
杀死 -9 1858
这是 Windows 的解决方案:
C:\Users\Niroshan>netstat -ano|findstr "PID :8080"
Proto Local Address Foreign Address State PID
TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 18264
taskkill /pid 18264 /f
我正在开发一个 Yocto Linux 系统,它有一组有限的可用 Linux 工具。我想终止使用特定端口(1883)的进程。
首先,要查看我们正在监听的端口,我使用了以下命令:
root@root:~# netstat -lt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:hostmon 0.0.0.0:* LISTEN
tcp 0 0 localhost.localdomain:domain 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:9080 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:1883 0.0.0.0:* LISTEN
tcp 0 0 :::hostmon :::* LISTEN
tcp 0 0 localhost:domain :::* LISTEN
tcp 0 0 :::ssh :::* LISTEN
tcp 0 0 :::1883 :::* LISTEN
接下来,我通过以下方式找到了使用端口 1883 的进程的名称:
root@root:~# fuser 1883/tcp
290
root@root:~# ps | grep 290
290 mosquitt 25508 S /usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf
12141 root 8444 S grep 290
正如我们在上面看到的,它是/usr/sbin/mosquitto
使用端口 1883 的程序。
最后,我杀死了这个过程:
root@root:~# systemctl stop mosquitto
我使用systemctl
它是因为在这种情况下它是一个 systemd 服务。
netstat -lt
fuser <port number>/tcp
kill <process id>
Git Bash 的其他方式:
stopProcessByPortNumber() {
port=":${1}"
portStrLine="$(netstat -ano | findstr LISTENING | findstr $port)"
processId="$(grep -oP '(\d+)(?!.*\d)' <<< $portStrLine)"
echo $processId
taskkill -PID $processId -F
}
在我的情况下,cent os 在建议的答案中有一些问题。所以我使用了以下解决方案:
ss -tanp | grep 65432 | head -1 | grep -Po "(?<=pid=).*(?=,)" | xargs kill
以@ veer7所说的内容为基础:
如果您想知道端口上有什么,请在杀死它之前执行此操作。
$ sudo netstat -plten |grep java
tcp6 0 0 127.0.0.1:8005 :::* LISTEN 1000 906726 25296/java
tcp6 0 0 :::8009 :::* LISTEN 1000 907503 25296/java
tcp6 0 0 :::8080 :::* LISTEN 1000 907499 25296/java
$ ps 25296
PID TTY STAT TIME COMMAND
25296 ? Sl 0:16 /usr/lib/jvm/java-8-openjdk-amd64/bin/java -Dcatalina.base=/hom
使用 'ps' 和 netstat 报告的进程号
如果端口上的服务没有响应,如何杀死进程
timeout 1 telnet localhost 8080 2>&1 | if grep -q 'Unable'; then sudo kill -9 $(sudo lsof -t -i:8080); fi
它能做什么
这可以放在文件中并从“sudo crontab”定期运行
在 Windows 中,它将是netstat -ano | grep "8080"
并且我们收到以下消息TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 10076
我们可以使用杀死PID taskkill /F /PID 10076