LoginSignup
2
0

More than 1 year has passed since last update.

開放したポートを一撃で閉じたい

Last updated at Posted at 2022-08-28

やりたいこと

ポートフォワーディングなどをバックグラウンドで実行した際に、開放したポートを閉じる。

通常だと、「ポート開放で使っているプロセス番号を調べる」→「該当プロセスをkillする」の手順を踏むと思われるが、実行コマンドが複数だったり、プロセス番号を一時的に覚えておく必要があったりして不便なので、諸々の処理をパイプラインで結合したワンライナーのコマンドとして実現したい

コマンド

環境: mac OSX 12, zsh

lsof -i:閉じたいポート番号 | tail -n +2 | sed -E "s/[ ]+/\t/g" | cut -f2 | uniq | xargs kill -9

個別のコマンド解説

コマンド 役割
lsof -i:port 対象ポートの情報(PIDを含む)を取得する
tail -n +2 lsof -i のヘッダを消す
sed -E "s/[ ]+/\t/g" 連続空白をcutしやすい区切り文字(TAB)にする
cut -f2 PIDの列のみ取得する
uniq PIDの重複をなくす
xargs kill -9 ↑までで取得したPIDのプロセスを停止する

追記

コメントでよりシンプルな方法を教えていただきました。行ごとに処理をするawkを使って、PIDの抽出を行っています

lsof -i:閉じたいポート番号 | awk 'NR>1{print $2}' | uniq | xargs kill -9
2
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0