lsofのより高速な代替手段


8

シャットダウンするために、特定のプロセスのプロセスIDを抽出したい。プロセスは特定のポート(localhost:3000)を使用するローカルWebサーバーであり、現在、関連する行を抽出するために次のようにしています。

lsof|grep localhost:3000

しかし、lsofコマンドが遅すぎます。プロセスIDを抽出するより速い方法はありますか?


lsof -iネットワーク接続のみをリストします。
ハナンN.

@HananN。試しましたが、まだとても遅いです。回答で提案されているようにnetstatを使用すると、はるかに高速になります。
sawa

2
lsofすべての名前解決とIP解決を使用するのは遅い部分ではありません。それをすべて数値にすると、高速になります。
Marcin

@Marcinあなたの情報は与えられた答えと同じくらい実際に役に立ちました。ありがとうございました。
sawa

そこにあなたがすることができない理由であるt use killall` pgreppkill
Nils

回答:


7

netstatを試してみてください。ただし、高速か低速かはわかりません。

netstat -tanp | awk '$4 ~ /:8443$/ {sub(/\/.*/, "", $7); print $7}' | sort -u

1
-pオプションを使用することを理解しています。Linuxでは、rootユーザーである必要があります。
Nikhil Mulley、2011年

1
netstatはネットワーク接続のみを一覧表示するため(開いているすべてのファイルではなく)、間違いなく高速です
Matteo

迅速かつ正確な対応ありがとうございます。私はたくさん助けてくれました。

11

lsofに-nオプションを付けると、DNS解決が削除され、表示を高速化できます


はい、それは問題を解決するようで、役に立ちます。それは、私の回答へのコメントで、Marcinによって部分的に提案されました。
sawa

1
時間は、nオプションに関係なく、lsofに10秒かかることを報告しました。
user1133275

2
sudo ss -p -l '( sport = :3000 )'|awk -F"," 'NR!=1{print $2}'

これは、3000でリッスンしているプロセスのPIDを出力します

time これは0m0.018sで完了したと報告しています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.