我尝试使用来自tomcat /bin目录的./shutdown.sh
关闭Tomcat,但发现服务器未能正确关闭。因此,我无法重新启动。
我的Tomcat正在端口8080
运行。
我想杀掉在8080
端口运行的Tomcat进程。我首先想获取在特定端口(8080)上运行的进程列表,以便选择要终止的进程。
我尝试使用来自tomcat /bin目录的./shutdown.sh
关闭Tomcat,但发现服务器未能正确关闭。因此,我无法重新启动。
我的Tomcat正在端口8080
运行。
我想杀掉在8080
端口运行的Tomcat进程。我首先想获取在特定端口(8080)上运行的进程列表,以便选择要终止的进程。
fuser 8080/tcp
命令会显示绑定在该端口上的进程的PID。fuser -k 8080/tcp
命令会杀掉该进程。lsof -i4
(或者使用IPv6时使用 lsof -i6
)。# list the TCP process bound to port PORT
fuser PORT/tcp
# Example: list the TCP process bound to port 8080
fuser 8080/tcp
# list the UDP process bound to port PORT
fuser PORT/udp
# Example: list the UDP process bound to port 8080
fuser 8080/udp
fuser
。它只接受文件作为参数,并不支持 -k
选项。 - a p列出监听端口8080的任何进程:
lsof -i:8080
要杀死监听8080端口的任何进程:
kill $(lsof -t -i:8080)
kill -9 $(lsof -t -i:8080)
(-9
对应于 SIGKILL - 立即终止/硬杀
信号:参见 Kill 信号列表 和 kill 命令中 -9 选项的目的是什么?。如果没有指定信号给 kill
,则会发送 TERM 信号,又称为 -15
或者 软杀
,这有时无法完全终止一个进程)。
sudo
完成它了吗? - Marcel Djamansudo lsof -i:8080
。 - Akavalllsof -t -i:8080 | xargs -r kill
更好地处理了空列表的情况。 - Dannie使用命令
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
表示进程将被强制终止。
netstat
获取进程名称可能需要 root 权限。 - Jonas Schäfersudo netstat -plten | grep :8080
也可以工作。这找到了一个 lsof -i
没有为我找到的 Ruby 进程。 - MikeF选项1 一行代码只关闭特定端口上的LISTEN状态:
kill -9 $(lsof -t -i:3000 -sTCP:LISTEN)
npx kill-port 3000
~/.bashrc
中创建了一个函数:killp() { kill -9 $(lsof -t -i:"$1" -sTCP:LISTEN) }
,以便能够像这样使用它 killp 3000
。(不要忘记为 {}
添加新行) - Arthur一行代码,省时省力
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)
选择进程ID并使用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
在这里,
因此,您现在可以使用以下命令轻松终止您的PID:
sudo kill -9 <PID>
在这里,
您可以使用以下命令来终止特定端口上的进程:
sudo kill -9 $(sudo lsof -t -i:8080)
更多内容请查看以下链接:如何在Linux上关闭特定端口上的进程
sudo kill -9 $(sudo lsof -t -i:8080)
对我有用。 - JunaidUbuntu
。 - Jose Mhlanga关闭特定端口上的所有进程的最佳方法:
kill -9 $(sudo lsof -t -i:8080)
kill -l -9 $(sudo lsof -t -i:8983)
。 - Namwanza Ronald这将把运行在<port_number>
上的所有进程的进程ID打印到标准输出(stdout):
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
用户身份运行所有命令