🔪
macOS+zsh: portを使用しているプロセスを1発でkillするShell関数を作った
いつも通りやると
-
$ lsof -i :[port番号]
でport番号からpidを調べる -
$ kill -9 [pid]
でプロセスをkillする
これだといちいちめんどくさい & 忘れてて何度もググることになりますよね。
.zshrcに関数を作成する
-
~/.zshrc
をVScodeでもVimでもいいので開きます。 - 下のコードを挿入して保存します。
-
source ~/.zshrc
で反映させます。
# Function
function kpp () {
pid=`lsof -i :"$1" -t`
wait
if [ -z $pid ]; then
tput bel
echo "$(tput setaf 3)🧘 No Process on Port $1$(tput sgr 0)"
else
kill -9 $pid
lsof -i :"$1" -t 2>/dev/null >/dev/null || echo "$(tput setaf 2)🔪 Killed Processes on Port $1$(tput sgr 0)"
fi
}
使い方
-
kpp
という名前で関数を作成しました。 - 後ろにport番号をくっつけると第一引数として渡されます。
-
kpp
はKill Process on a Port
の略であり、きゃりーぱみゅぱみゅ
の略称です。
コードの解説
function kpp () { # kpp という関数を作成します。
pid=`lsof -i :"$1" -t` # 第一引数(port番号)を$1で受けて、lsofコマンドを使ってportを使用しているプロセスのIDを取得し、変数pidに代入します。
wait # 上のプロセスが完了するまで待ちます。
if [ -z $pid ]; then # pidが存在していない場合
tput bel # コマンドがbelを鳴らします
echo "$(tput setaf 3)🧘 No Process on Port $1$(tput sgr 0)" # 結果をyellowで出力します
else
kill -9 $pid # プロセスをkillします
lsof -i :"$1" -t 2>/dev/null >/dev/null || echo "$(tput setaf 2)🔪 Killed Processes on Port $1$(tput sgr 0)" # プロセスが終了していることを確認し、結果をgreenで出力します
fi
}
Discussion