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.050sgrep -mは覚えておいて損のないオプションですね!@hide_o_55 ++
