xargsを使用してショートカットコマンドを作成する必要があります

xargsを使用してショートカットコマンドを作成する必要があります

私は常にポート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

まず、-tPID のみを出力する 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

関連情報