netstat | grep が遅いなぁと思ったときにはgrep -m
サーバ間の通信を調査したいときに、netstat
はよく使うと思います。たとえば、あるポートを使ってるプロセスを探したい時。
# netstat -taopn | grep :29324
tcp 0 0 192.168.11.11:29324 192.168.11.12:3306 ESTABLISHED 10726/perl off (0.00/0/0)
ただ、すごいたくさん通信してるサーバだと、netstat
自身がすごい遅くて、上記コマンドが終了するのに時間がかかります。手で見てる時はまぁどうでもいいんですが、自動化したい時とかにずっと待ってると微妙ですよね。
見つけたいのは 1 行だけだなぁと思ったので| head -1
とかしてみたんですがあんまうまくいってない。
# time netstat -taopn | grep :29324 | head -1
tcp 0 0 192.168.11.11:29324 192.168.11.12:3306 ESTABLISHED 10726/perl off (0.00/0/0)
real 0m23.908s
user 0m0.773s
sys 0m23.140s
というところで神降臨。
@riywo grep -m <NUM> はどうでしょう?
— Hideaki Ohno (@hide_o_55) June 9, 2012
grep -m
はマッチする最大行数を指定できるオプション。これを使ってみたら爆速で結果を得ることができました!
# time netstat -taopn | grep -m 1 :29324
tcp 0 0 192.168.11.11:29324 192.168.11.12:3306 ESTABLISHED 10726/perl off (0.00/0/0)
real 0m0.054s
user 0m0.006s
sys 0m0.050s
grep -m
は覚えておいて損のないオプションですね!@hide_o_55 ++