How to kill a process running on particular port in Linux?

一笑奈何 提交于 2019-11-26 02:39:06

问题


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:


I would add this one-liner to kill only LISTEN on specific port:

kill -9 $(lsof -t -i:3000 -sTCP:LISTEN)




回答5:


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




回答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:


Get the PID of the task and kill it.

lsof -ti:8080 | xargs kill



回答10:


try like this,

 sudo fuser -n tcp -k 8080



回答11:


  1. lsof -i tcp:8000 This command lists the information about process running in port 8000

  2. kill -9 [PID] This command kills the process




回答12:


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




回答13:


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.




回答14:


Choose the port number and apply the grep in netstat command as shown below

netstat -ap | grep :7070

Console Output

tcp 0 0 :::7070 :::* LISTEN 3332/java

Kill the service based on PID ( Process Identification Number )

kill -9 3332



回答15:


You can know list of all ports running in system along with its details (pid, address etc.) :

netstat -tulpn

You can know details of a particular port number by providing port number in following command :

sudo netstat -lutnp | grep -w '{port_number}'

ex: sudo netstat -lutnp | grep -w '8080' Details will be provided like this :

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name

if you want to kill a process using pid then : kill -9 {PID}

if you want to kill a process using port number : fuser -n tcp {port_number}

use sudo if you are not able to access any.




回答16:


kill -9 `fuser 8080/tcp|xargs -n 1`, this commands also kills the process that listens on port 8080 with TCP connection




回答17:


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




回答18:


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




回答19:


Other way with Git Bash:

stopProcessByPortNumber() {
port=":${1}"
portStrLine="$(netstat -ano | findstr LISTENING | findstr $port)"
processId="$(grep -oP '(\d+)(?!.*\d)' <<< $portStrLine)"
echo $processId
taskkill -PID $processId -F
}



回答20:


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



来源:https://stackoverflow.com/questions/11583562/how-to-kill-a-process-running-on-particular-port-in-linux

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!