我尝试在tomcat /bin目录下使用。/shutdown.sh关闭tomcat。但发现服务器没有正确关闭。因此我无法重新启动我的tomcat运行在端口8080上。
我想终止在8080上运行的tomcat进程。我首先想要在特定端口(8080)上运行的进程列表,以便选择要终止哪个进程。
我尝试在tomcat /bin目录下使用。/shutdown.sh关闭tomcat。但发现服务器没有正确关闭。因此我无法重新启动我的tomcat运行在端口8080上。
我想终止在8080上运行的tomcat进程。我首先想要在特定端口(8080)上运行的进程列表,以便选择要终止哪个进程。
当前回答
获取任务的PID并终止它。
lsof -ti:8080 | xargs kill
其他回答
使用这个脚本,它比其他选项更友好,检查端口是否实际在使用。
使用方法: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
}
可以使用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
Git Bash的其他方式:
stopProcessByPortNumber() {
port=":${1}"
portStrLine="$(netstat -ano | findstr LISTENING | findstr $port)"
processId="$(grep -oP '(\d+)(?!.*\d)' <<< $portStrLine)"
echo $processId
taskkill -PID $processId -F
}
首先你需要做的是运行(替换为你的端口号):
fuser -k 3000/tcp
这将释放端口。运行上述命令后,执行以下命令:
service docker restart
你的问题解决了。
这个fuser 8080/tcp将打印该端口绑定进程的PID。
这个fuser -k 8080/tcp会终止这个进程。
仅适用于Linux。更通用的是使用lsof -i4(或IPv6的6)。