私は常にポート3000で待機しているプロセスIDを終了したいので、現在使用しているのは、
1.lsof -i tcp:3000
出力は次のようになります。
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
ruby 6697 xxxx 5u IPv4 251982 0t0 TCP *:3000 (LISTEN)
2を使用して PID を強制終了します
。kill -9 6697
このプロセスを自動的に実行する bash プログラムを作成したいと思います。
最初のコマンドの出力の PID を取得するために xargs を使用しようとしましたが、失敗しました。
答え1
まず、-t
PID のみを出力する lsof のオプションが必要です。kill に PID のリストを与えることもできます。
kill -9 $(lsof -ti tcp:3000)
これを頻繁に行う場合は、エイリアスを作成してください
alias kill3000='kill -9 $(lsof -ti tcp:3000)'
答え2
これがそれです( なしxargs
):
lsof -i tcp:8080 | while read cmd pid rest; do ((pid)) && kill -9 $pid; done