我尝试在tomcat /bin目录下使用。/shutdown.sh关闭tomcat。但发现服务器没有正确关闭。因此我无法重新启动我的tomcat运行在端口8080上。
我想终止在8080上运行的tomcat进程。我首先想要在特定端口(8080)上运行的进程列表,以便选择要终止哪个进程。
我尝试在tomcat /bin目录下使用。/shutdown.sh关闭tomcat。但发现服务器没有正确关闭。因此我无法重新启动我的tomcat运行在端口8080上。
我想终止在8080上运行的tomcat进程。我首先想要在特定端口(8080)上运行的进程列表,以便选择要终止哪个进程。
当前回答
首先你需要做的是运行(替换为你的端口号):
fuser -k 3000/tcp
这将释放端口。运行上述命令后,执行以下命令:
service docker restart
你的问题解决了。
其他回答
列出监听端口8080的所有进程:
lsof -i:8080
杀死任何监听8080端口的进程:
kill $(lsof -t -i:8080)
或者更激烈:
kill -9 $(lsof -t -i:8080)
(-9对应SIGKILL -立即终止/硬杀信号:参见kill信号列表和kill命令中-9选项的用途是什么?如果没有指定要终止的信号,则发送TERM信号,即-15或软终止,这有时不足以终止进程。
使用这个脚本,它比其他选项更友好,检查端口是否实际在使用。
使用方法: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表示进程将被强制终止。
这将杀死端口80上运行的程序
sudo fuser -k 80/tcp
选择端口号并应用netstat命令中的grep,如下所示
netstat -ap | grep :7070
控制台输出
tcp 0 0:::7070:::* LISTEN 3332/java
根据PID(进程标识号)终止服务
kill -9 3332