我尝试在tomcat /bin目录下使用。/shutdown.sh关闭tomcat。但发现服务器没有正确关闭。因此我无法重新启动我的tomcat运行在端口8080上。
我想终止在8080上运行的tomcat进程。我首先想要在特定端口(8080)上运行的进程列表,以便选择要终止哪个进程。
我尝试在tomcat /bin目录下使用。/shutdown.sh关闭tomcat。但发现服务器没有正确关闭。因此我无法重新启动我的tomcat运行在端口8080上。
我想终止在8080上运行的tomcat进程。我首先想要在特定端口(8080)上运行的进程列表,以便选择要终止哪个进程。
当前回答
简单地运行这个命令。别忘了用你的端口替换端口号;)
kill -9 $(sudo lsof -t -i:portnumber)
其他回答
使用这个脚本,它比其他选项更友好,检查端口是否实际在使用。
使用方法:openport 1234
openport() {
# sed = second line https://stackoverflow.com/a/1429628/152711
# awk = second word https://unix.stackexchange.com/a/174038
processId=$(lsof -i tcp:$1 | sed -n 2p | awk '{print $2}')
if [ ! -z "$processId" ] # Non-null https://www.cyberciti.biz/faq/bash-shell-find-out-if-a-variable-has-null-value-or-not/
then
echo Killing $processId
kill -9 $processId
else
echo No process found
fi
}
使用命令
sudo 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 8080/tcp将打印该端口绑定进程的PID。
这个fuser -k 8080/tcp会终止这个进程。
仅适用于Linux。更通用的是使用lsof -i4(或IPv6的6)。
简单地运行这个命令。别忘了用你的端口替换端口号;)
kill -9 $(sudo lsof -t -i:portnumber)
输出所有在<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)
}