Edited at

指定したポートを占有しているプロセスをKILLするシェル書いた

More than 1 year has passed since last update.

最近lsofでKILLすること増えて、lsofいちいちするのが面倒になったので。

https://stackoverflow.com/questions/9168392/shell-script-to-kill-the-process-listening-on-port-3000

の内容を引数指定にしました。

#!/bin/bash

# @see https://stackoverflow.com/questions/9168392/shell-script-to-kill-the-process-listening-on-port-3000
pid=$(lsof -i:$1 -t)
echo ${pid}
if [ -z "${pid}" ]; then
echo "port: '$1' not found. quit."
exit 1
fi
kill -TERM $pid || kill -KILL $pid

これをパスの通ったところに(私は ~/bin とかにパスを通しています) killport とか適当な名前で保存して755のpermissionとかすればいいよね。使う時は以下のように。lsofで前後確認するとちゃんとKILLされたのがわかる

$ lsof -i:3000 

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
ruby 70638 ms2sato 9u IPv4 0xe754e6b893fe4a91 0t0 TCP *:hbci (LISTEN)
$ killport 3000
70638
$ lsof -i:3000
$