TCPプロセス番号を確認するには?

TCPプロセス番号を確認するには?

私はアプリケーションのプロセスIDを見たいときにこれを行いますps -aux | grep <application>。たとえば、これによりps -aux | grep sshSSHのプロセスIDが表示されます。

ところで、これを行うps -aux | grep tcpと、インターネットを積極的に使用していますが、何も出力されません。

TCPのプロセスIDを確認するには?

答え1

TCPはプロセスではなく、カーネル内のスタックまたはサブシステムです。 「プロセスID」がないため、タスクの一部としてタスクを実行するカーネルスレッドではこれを行うことができます。 TCPスタック操作を実行するために必要な操作は、複数のkthread、ユーザー空間プロセスのカーネルスタック、および他の場所に分散されます。

たとえば、コンピューターで kworkers を表示するには、次のようにします。

% pgrep -af kworker | head
24 kworker/1:0H-events_highpri
30 kworker/2:0H-events_highpri
36 kworker/3:0H-events_highpri
42 kworker/4:0H-kblockd
48 kworker/5:0H-events_highpri
54 kworker/6:0H-events_highpri
60 kworker/7:0H-events_highpri
120 kworker/1:1H-events_highpri
121 kworker/0:1H-kblockd
151 kworker/7:1H-events_highpri

そのうちのいくつかはある種の仕事に専念し、他のものはより広い範囲を持っています。 TCP スタックには、ネットワークだけでなく CPU スケジューラ、メモリ、その他のリソースも含まれるため、カーネルのさまざまな部分を TCP パケット処理に抽象的に含めることができます。

答え2

私はあなたがps -aux | grep sshSSHポート(TCPポート22)のシステムを見て、それが一致すると思ったと仮定します。実際、sshというプログラム名と一致します。

次のことは実際に何をしたいのかによって異なります。 TCPを使用してすべてのプロセスを表示するために必要なツールはですss

ss -atnpたぶんそれがあなたが追いかけているのかもしれません。これにより、すべてのTCP数値aソケットとそれを開いたプロセスが表示されます。 WebサーバーやSSHサーバーなど、独自の非所有プロセスを表示するには、rootまたはsudoを使用する必要があります。tnp

このコマンドは、「誰がリモートサイトXに接続しているのか」、「誰がポート1234を開いたか」などの質問に答えます。

関連情報