shell script to kill the process listening on port 3000?

LinuxBashSocketsKill

Linux Problem Overview


I want to define a bash alias named kill3000 to automate the following task:

$ lsof -i:3000

COMMAND   PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
ruby    13402 zero    4u  IPv4 2847851      0t0  TCP *:3000 (LISTEN)

$ kill -9 13402

Linux Solutions


Solution 1 - Linux

alias kill3000="fuser -k -n tcp 3000"

Solution 2 - Linux

Try this:

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

The -t flag is what you want: it displays PID, and nothing else.

Update

In case the process is not found and you don't want to see error message:

kill -9 $(lsof -i:3000 -t) 2> /dev/null

Assuming you are running bash.

Update

Basile's suggestion is excellent: we should first try to terminate the process normally will kill -TERM, if failed, then kill -KILL (AKA kill -9):

pid=$(lsof -i:3000 -t); kill -TERM $pid || kill -KILL $pid

You might want to make this a bash function.

Solution 3 - Linux

Another option using using the original lsof command:

lsof -n -i:3000 | grep LISTEN | awk '{ print $2 }' | uniq | xargs kill -9

If you want to use this in a shell script, you could add the -r flag to xargs to handle the case where no process is listening:

... | xargs -r kill -9

Solution 4 - Linux

How about

alias kill3000="lsof -i:3000 | grep LISTEN | awk '{print $2}' | xargs kill -9"

Solution 5 - Linux

fuser -k 3000/tcp should also work

Solution 6 - Linux

fuser -n tcp 3000

Will yield the output of

3000/tcp:     <$pid>

So you could do:

fuser -n tcp 3000 | awk '{ print $2 }' | xargs -r kill

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionJonathanView Question on Stackoverflow
Solution 1 - LinuxSamBView Answer on Stackoverflow
Solution 2 - LinuxHai VuView Answer on Stackoverflow
Solution 3 - LinuxNiklas B.View Answer on Stackoverflow
Solution 4 - LinuxdgwView Answer on Stackoverflow
Solution 5 - LinuxDmitriusanView Answer on Stackoverflow
Solution 6 - LinuxsynthesizerpatelView Answer on Stackoverflow