ローカルソケットに接続する PID を継続的に監視するにはどうすればよいですか?

ローカルソケットに接続する PID を継続的に監視するにはどうすればよいですか?

いくつかのローカルプロセスポート 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

connectLinux でTCP イベントを監視するために使用できるツールは 2 つあります。

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 と対話します

関連情報