我尝试使用来自tomcat /bin目录的./shutdown.sh
关闭Tomcat,但发现服务器未能正确关闭。因此,我无法重新启动。
我的Tomcat正在端口8080
运行。
我想杀掉在8080
端口运行的Tomcat进程。我首先想获取在特定端口(8080)上运行的进程列表,以便选择要终止的进程。
我尝试使用来自tomcat /bin目录的./shutdown.sh
关闭Tomcat,但发现服务器未能正确关闭。因此,我无法重新启动。
我的Tomcat正在端口8080
运行。
我想杀掉在8080
端口运行的Tomcat进程。我首先想获取在特定端口(8080)上运行的进程列表,以便选择要终止的进程。
在@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
openport 1234
openport() {
# sed = second line https://dev59.com/8nM_5IYBdhLWcg3wUxVB#1429628
# 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
}
timeout 1 telnet localhost 8080 2>&1 | if grep -q 'Unable'; then sudo kill -9 $(sudo lsof -t -i:8080); fi
它是什么
这可以放置在文件中,并定期从'sudo crontab'运行
我个人解决这个问题的方法可以在我制作的这个要点中找到,在这个要点中的第一步是运行:
sudo lsof -i [PROTOCAL]:[PORT]
sudo kill -9 [PROCESS ID]
netstat -ano | grep "8080"
,然后我们得到以下消息:TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 10076
我们可以使用 taskkill /F /PID 10076
来终止 PID。