可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I tried to close the tomcat using ./shutdown.sh
from tomcat /bin
directory. But found that the server was not closed properly. And thus I was unable to restart
My tomcat is running on port 8080
.
I want to kill the tomcat process running on 8080
. I first want to have the list of processes running on a specific port (8080) in order to select which process to kill.
回答1:
This fuser 8080/tcp
will print you PID of process bound on that port.
And this fuser -k 8080/tcp
will kill that process.
Works on Linux only. More universal is use of lsof -i4
(or 6 for IPv6).
回答2:
To list any process listening to the port 8080:
lsof -i:8080
To kill any process listening to the port 8080:
kill $(lsof -t -i:8080)
or more violently:
kill -9 $(lsof -t -i:8080)
(-9
corresponds to the SIGKILL - terminate immediately/hard kill
signal: see List of Kill Signals and What is the purpose of the -9 option in the kill command?. If no signal is specified to kill
, the TERM signal a.k.a. -15
or soft kill
is sent, which sometimes isn't enough to kill a process.).
回答3:
Use the command
sudo netstat -plten |grep java
used grep java
as tomcat
uses java
as their processes.
It will show the list of processes with port number and process id
tcp6 0 0 :::8080 :::* LISTEN
1000 30070621 16085/java
the number before /java
is a process id. Now use kill
command to kill the process
kill -9 16085
-9
implies the process will be killed forcefully.
回答4:
You can use the lsof command.
Let port number like here is 8090
lsof -i:8090
This command returns a list of open processes on this port.
Something like…
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
ssh 75782 eoin 5u IPv6 0x01c1c234 0t0 TCP localhost:8090 (LISTEN)
To free the port, kill the process using it(the process id is 75782)…
kill -9 75782
This one worked for me.
here is the link from the original post: link
回答5:
I would add this one-liner for only LISTEN on specific port:
kill -9 $(lsof -t -i:3000 -sTCP:LISTEN)
回答6:
If you want to kill a process running on port number 8080 then first you need to find the 8080 port process identification number(PID) and then kill it. Run the following command to find 8080 port number PID:
sudo lsof -t -i:8080
Here,
- sudo - command to ask admin privilege(user id and password).
- lsof - list of files(Also used for to list related processes)
- -t - show only process ID
- -i - show only internet connections related process
- :8080 - show only processes in this port number
So you can now easily kill your PID using following command:
sudo kill -9 <PID>
Here,
- kill - command to kill the process
- -9 - forcefully
You can use one command to to kill a process on a specific port using the following command:
sudo kill -9 $(sudo lsof -t -i:8080)
For more you can see the following link
How to kill a process on a specific port on linux
回答7:
This prints to stdout the process ids of everything running on <port_number>
:
fuser -n tcp <port_number>
It also prints some stuff to stderr, so:
fuser -n tcp <port_number> 2> /dev/null
We can then supply these process ids to the kill
command:
sudo kill $(fuser -n tcp <port_number> 2> /dev/null)
You could also put this in a function if you do it a lot:
function killport() {
sudo kill $(fuser -n tcp $1 2> /dev/null)
}
回答8:
To know the pid of service running on particular port :
netstat -tulnap | grep :*port_num*
you will get the description of that process. Now use kill or kill -9 pid. Easily killed.
e.g
netstat -ap | grep :8080
tcp6 0 0 :::8080 :::* LISTEN 1880/java
Now:
kill -9 1880
Remember to run all commands as root
回答9:
try like this,
sudo fuser -n tcp -k 8080
回答10:
lsof -i tcp:8000
This command lists the information about process running in port 8000
kill -9 [PID]
This command kills the process
回答11:
Linux: First you can find PID of this command if you know the port :
netstat -tulpn
example:-
Local Address Foreign Address State PID/Program name
:::3000 :::* LISTEN 15986/node
You then take the kill process. run the following command:
kill -9 PID
Expample: -
kill -9 15986
回答12:
Linux: You can use this command if you know the port :
netstat -plten | grep LISTEN | grep 8080
AIX:
netstat -Aan | grep LISTEN | grep 8080
You then take the first column (example: f100050000b05bb8) and run the following command:
rmsock f100050000b05bb8 tcpcb
kill process.
回答13:
kill -9 `fuser 8080/tcp|xargs -n 1`
, this commands also kills the process that listens on port 8080 with TCP connection
回答14:
Get the PID of the task and kill it.
lsof -ti:8080 | xargs kill
回答15:
sudo apt-get install psmisc (or sudo yum install psmisc)
sudo fuser 80/tcp
Result:
80/tcp: 1858 1867 1868 1869 1871
Kill process one by one
kill -9 1858
回答16:
to build on what @veer7 said:
if you want to know what was on the port, do this before you kill it.
$ 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
Use 'ps' and the number of the process that netstat reported back
回答17:
In Windows, it will be netstat -ano | grep "8080"
and we get the following message TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 10076
WE can kill the PID using taskkill /F /PID 10076