私はアプリケーションのプロセスIDを見たいときにこれを行いますps -aux | grep <application>
。たとえば、これによりps -aux | grep ssh
SSHのプロセス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 ssh
SSHポート(TCPポート22)のシステムを見て、それが一致すると思ったと仮定します。実際、sshというプログラム名と一致します。
次のことは実際に何をしたいのかによって異なります。 TCPを使用してすべてのプロセスを表示するために必要なツールはですss
。
ss -atnp
たぶんそれがあなたが追いかけているのかもしれません。これにより、すべてのTCP数値a
ソケットとそれを開いたプロセスが表示されます。 WebサーバーやSSHサーバーなど、独自の非所有プロセスを表示するには、rootまたはsudoを使用する必要があります。t
n
p
このコマンドは、「誰がリモートサイトXに接続しているのか」、「誰がポート1234を開いたか」などの質問に答えます。