我尝试使用 tomcat /bin
目录中的 ./shutdown.sh
关闭 tomcat。但是发现服务器没有正常关闭。因此我无法重新启动
我的 tomcat 正在端口 8080
上运行。
我想终止在 8080
上运行的 tomcat 进程。我首先想要在特定端口(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
信号:请参阅 List of Kill Signals 和 What is the purpose of the -9 option in the kill command?。如果没有为 kill
指定信号,则发送 TERM 信号,即 -15
或 soft kill
,有时不会足以杀死一个进程。)。
sudo
做的吗
sudo lsof -i:8080
。
lsof -t -i:8080 | xargs -r kill
更好地处理空列表情况。
使用命令
sudo netstat -plten |grep java
used grep java
as tomcat
使用 java
作为他们的进程。
它将显示带有端口号和进程 ID 的进程列表
tcp6 0 0 :::8080 :::* LISTEN
1000 30070621 16085/java
/java
之前的数字是进程 ID。现在使用 kill
命令杀死进程
kill -9 16085
-9
表示进程将被强制终止。
netstat
获取进程名称。
sudo netstat -plten | grep :8080
也可以使用。这找到了一个 lsof -i
没有为我找到的 ruby 进程。
选项 1 单线只杀死特定端口上的 LISTEN:
kill -9 $(lsof -t -i:3000 -sTCP:LISTEN)`
选项 2 如果您安装了 npm,您也可以运行
npx kill-port 3000
~/.bashrc
: killp() { kill -9 $(lsof -t -i:"$1" -sTCP:LISTEN) }
中创建了一个函数,以便能够像 killp 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
此命令返回此端口上打开的进程列表。
就像是…
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
ssh 75782 eoin 5u IPv6 0x01c1c234 0t0 TCP localhost:8090 (LISTEN)
要释放端口,请终止使用它的进程(进程 ID 为 75782)...
kill -9 75782
这个对我有用。这是原始帖子的链接:link
如果要杀死在端口号 8080 上运行的进程,则首先需要找到 8080 端口的进程标识号(PID),然后将其杀死。运行以下命令查找 8080 端口号 PID:
sudo lsof -t -i:8080
这里,
sudo - 询问管理员权限(用户 ID 和密码)的命令。
lsof - 文件列表(也用于列出相关进程)
-t - 仅显示进程 ID
-i - 仅显示与 Internet 连接相关的进程
:8080 - 仅显示此端口号中的进程
因此,您现在可以使用以下命令轻松杀死您的 PID:
sudo kill -9 <PID>
这里,
kill - 杀死进程的命令
-9 - 强行
您可以使用以下命令使用一个命令来终止特定端口上的进程:
sudo kill -9 $(sudo lsof -t -i:8080)
有关更多信息,您可以查看以下链接 How to kill a process on a specific port on linux
sudo kill -9 $(sudo lsof -t -i:8080)
为我工作
Ubuntu
杀死特定端口上所有进程的最佳方法;
kill -9 $(sudo lsof -t -i:8080)
这会将在 <port_number>
上运行的所有内容的进程 ID 打印到标准输出:
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
lsof -ti:8080-8089 | 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
Linux:如果您知道端口,则可以使用此命令:
netstat -plten | grep LISTEN | grep 8080
艾克斯:
netstat -Aan | grep LISTEN | grep 8080
然后取第一列(例如:f100050000b05bb8)并运行以下命令:
rmsock f100050000b05bb8 tcpcb
杀死进程。
lsof -i tcp:8000 该命令列出8000端口运行的进程信息 kill -9 [PID] 该命令杀死进程
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
我正在开发一个 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
正如我们在上面看到的,使用端口 1883 的是程序 /usr/sbin/mosquitto
。
最后,我杀死了这个过程:
root@root:~# systemctl stop mosquitto
我使用了 systemctl
因为在这种情况下它是一个 systemd 服务。
这是 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
Git Bash 的其他方式:
stopProcessByPortNumber() {
port=":${1}"
portStrLine="$(netstat -ano | findstr LISTENING | findstr $port)"
processId="$(grep -oP '(\d+)(?!.*\d)' <<< $portStrLine)"
echo $processId
taskkill -PID $processId -F
}
先查看进程 netstat -lt check process id fuser <端口号>/tcp kill 端口上运行的进程 kill <进程id>
以 @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 报告的进程号
在我的情况下,cent os 在建议的答案中有一些问题。所以我使用了以下解决方案:
ss -tanp | grep 65432 | head -1 | grep -Po "(?<=pid=).*(?=,)" | xargs kill
如果端口上的服务没有响应,如何杀死进程
timeout 1 telnet localhost 8080 2>&1 | if grep -q 'Unable'; then sudo kill -9 $(sudo lsof -t -i:8080); fi
它能做什么
用一秒开始“超时”,使 telnet 退出 '2>&1 | '管道错误消息而不退出如果错误消息包含'Unable',则运行kode以终止进程锁定端口8080
这可以放在文件中并从“sudo crontab”定期运行
fuser
。只取文件,不支持-k
。fuser: command not found
,请安装 psmisc。对于 CentOS/RHEL 7,运行sudo yum install psmisc