Ipad

ターミナルからMacで開いているすべてのインターネット接続を一覧表示して帯域幅の問題を追跡する

ターミナルからMacで開いているすべてのインターネット接続を一覧表示して帯域幅の問題を追跡する

OS Xのターミナル最近、オフィスのLANの速度がいつもより遅くなっていて、何が余分な帯域幅を消費しているのか特定できませんでした。P2Pトラフィックが原因ではないかと疑っていましたが、問題となっているマシン上では目立った兆候が見当たりませんでした。そこで当然疑問になるのは、Mac OS Xからインターネットや外部に接続しているプロセスをどのように確認するかということです。

lsof コマンドラインツールを使用すると、-i 引数を渡して、Mac 上のアクティブな開いているインターネット接続のみを一覧表示することができ、外部アドレスへの接続で異常な動作 (または私の場合は、隠れた動作) が発生していないかどうかを調べることができます。また、このコマンドでは、問題となっているアプリケーションまたはタスクのプロセス ID も表示されるので、必要に応じてそれを強制終了してアクティビティを停止することができます。

コマンドラインから OS X で開いているすべてのインターネット接続のリストを表示する

これは OS X のターミナルから入力する必要がありますが、SSH を使用してリモートで使用することも、Mac でローカルに使用することもできます。

問題のある Mac にログインし、次のコマンドを入力しました。

lsof -i

sudo を使用する必要はありませんが、特定のユースケースで希望または必要な場合は使用できます。

lsof の出力は少し複雑ですが、コマンド ラインに慣れていれば、それほど奇妙に見えることはないはずです。

以下は、lsof -i コマンド文字列によって表示される出力の例です。

MacMini:~ macuser$ lsof -i
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
SystemUIS 93 macuser 6u IPv4 0x04db27bc 0t0 UDP *:*
SystemUIS 93 macuser 10u IPv4 0x04db26e0 0t0 UDP *:*
iChatAgen 111 macuser 6u IPv4 0x07084734 0t0 UDP localhost:49490->localhost:49490
iChatAgen 111 macuser 10u IPv4 0x05666f28 0t0 TCP 192.168.0.101:53762->bos-m012c-sdr6.blue.aol.com:aol (ESTABLISHED)
synergys 129 macuser 5u IPv4 0x05f2f6b0 0t0 TCP *:24800 (LISTEN)
Safari 148 macuser 10u IPv4 0x06db46e0 0t0 TCP 192.168.0.101:57557->host29.prod.google.com:http (CLOSE_WAIT)
iTunes 644 macuser 21u IPv4 0x05f2f2a4 0t0 TCP *:daap (LISTEN)

ターミナルアイコン 512x5122上記のlsof出力には特に異常はありませんが、前述のネットワークトラブルシューティングで、ネットワーク上のMacの1台でバックグラウンドに隠れて実行されているBitTorrentクライアントを発見しました。このクライアントは複数の大きなファイルをシードしていました。当然のことながら、BitTorrentクライアントを強制終了し、アプリケーションを削除してファイルを削除したところ、Mac LANは再びフルスピードで動作するようになりました。

確立されたインターネット接続のみを一覧表示する

確立された接続のみを表示したい場合 (つまり、アクティブに通信しており、ローカル マシンと外部 IP の間にリンクが確立されている)、前述の lsof 文字列の次のコマンド バリエーションを使用できます。

lsof -i | grep -E "(LISTEN|ESTABLISHED)"

これを「watch」と組み合わせて、確立された接続の自動更新リストを取得することもできます。

また、プロセス名がわかっている場合は、その特定の名前またはあいまいな名前に対しても grep をいつでも使用できます。

これは少し高度な機能ですが、ターミナルやコマンドラインに慣れているMacユーザーには非常に役立ちます。Mac初心者の方は、Private Eyeを使ってOS Xのインターネットとネットワーク接続を監視できます。これは無料ですが、グラフィカルユーザーインターフェースで動作する優れたサードパーティ製アプリケーションで、特にターミナルに慣れていない人にとっては、少し扱いやすいでしょう。