いくつかのローカルプロセスポート 1234 の 127.0.0.1 に接続および切断しています。
このポート (またはサーバー プロセス) へのすべての接続をログに記録したいと思います。
私はもう試した
ss -tpn | grep 1234
リストが表示されますが、その後停止します。新しい接続のログが記録されないため、ソケットも所有者の PID も取得できません。
接続ソケットと切断ソケットの PID を検出するにはどのツールを使用できますか?
答え1
それを実行する「ウォッチ」ツールがあります。または、
while true; do sleep 2; clear; ss -tulnp | grep 1234 ; done
コードをファイルに追加して追跡することもできます。これにより、CPU 使用率が発生する可能性がありますが、探しているものを見つけるのに役立つ可能性があります。
Linux のウォッチコマンド
答え2
connect
Linux でTCP イベントを監視するために使用できるツールは 2 つあります。
- tcpconnect.pybccツール(翻訳元、複製学)
- tcpconnect.btbpftrace で (翻訳元、複製学)
2 つの違いは、前者は出力をカスタマイズするためのオプション (例: PID またはポート番号によるフィルタリング) を提供するのに対し、後者はより単純なツールであり、高度なオプションは提供されないことです。
あなたのユースケースでは、最も簡単なオプションは bcc をインストールして実行することです:
tcpconnect.py -P 1234
ディストリビューションのパッケージ マネージャーを使用してこれらのツールをインストールする場合、一部のディストリビューションではtcpconnect
、代わりに/usr/bin
のように他の場所に配置することに注意/usr/share
してください。そのため、これらのファイルが見つからない場合は、ディストリビューションがこれらのファイルを配置する場所を確認してください。
答え3
はss
ソケット統計のみをダンプし、連続ダンプをシミュレートする必要がありますが (watch
またはwhile
ループを使用)、にはnetstat
連続モード ( -c
) があります。
netstat -ntcp | grep ' 127.0.0.1:1234'
クライアントの PID のみをキャプチャする必要がある場合、127... の前の 2 つのスペースはタイプミスではないことに注意してください。
サンプル出力:
$ netstat -ntcp | grep ' 127.0.0.1:1234'
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp 0 0 127.0.0.1:50146 127.0.0.1:1234 ESTABLISHED 21274/nc
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp 0 0 127.0.0.1:50146 127.0.0.1:1234 ESTABLISHED 21274/nc
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp 0 0 127.0.0.1:50146 127.0.0.1:1234 ESTABLISHED 21274/nc
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp 0 0 127.0.0.1:35720 127.0.0.1:1234 ESTABLISHED 22655/nc
tcp 0 0 127.0.0.1:50146 127.0.0.1:1234 ESTABLISHED 21274/nc
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp 0 0 127.0.0.1:35720 127.0.0.1:1234 ESTABLISHED 22655/nc
tcp 0 0 127.0.0.1:50146 127.0.0.1:1234 ESTABLISHED 21274/nc
答え4
watch -n 1 -d 'lsof -n -itcp:1234'
ログ記録ではなく、ハイライトによるリアルタイムの強力な監視...
$ man watch
- -n 1 - 1秒ごと
- -d - 相違点を強調表示
$ man lsof
- -n - IP をドメインに解決しません。
- -itcp:1234 - すべては TCP ポート 1234 と対話します