「netstat」がScreenクライアントを表示せずにScreenサーバープロセスのみを表示するのはなぜですか?

「netstat」がScreenクライアントを表示せずにScreenサーバープロセスのみを表示するのはなぜですか?

~からhttps://unix.stackexchange.com/a/485290/674

出力の下部にはnetstatUNIXソケットがあります。

Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node   PID/Program name     Path
<snip>
unix  2      [ ACC ]     STREAM     LISTENING     21936    1/systemd            /run/dbus/system_bus_socket
<snip>
unix  3      [ ]         STREAM     CONNECTED     28918    648/dbus-daemon      /run/dbus/system_bus_socket

どちらのプロセスもUNIXソケットを使用していることがわかります /run/dbus/system_bus_socket。したがって、プロセスの1つを知っている場合は、それを見て他の側面を識別できるはずです。

これは、Unixドメインソケットに基づくサーバーとクライアントプロセスのペアが上記の出力に表示される必要があるnetstatことを意味しますか?つまり、netstatサーバーとクライアントのプロセスを常に表示する必要がありますか?

netstatGNU Screenは、Unixドメインソケットに基づくサーバーおよびクライアントプロセスとしても実行されるため、?の出力に表示する必要があります。netstat実際にScreenクライアントが表示されず、次のようにScreenサーバープロセスのみが表示されるのはなぜですか?

$ sudo netstat -ap | grep -i screen 
unix  2   [ ACC ]  STREAM  LISTENING  4533106  27525/SCREEN   /run/screen/S-t/27525.test

2つを同時にps表示しますか?

$ ps aux | grep -i screen
t        19686  0.0  0.0  45096  3292 pts/7    S+   22:19   0:00 screen -r test
t        27525  0.0  0.0  45780  3292 ?        Ss   07:22   0:00 SCREEN -S test

ありがとうございます。

答え1

screenプロセスは実行中にソケット接続を維持せず、送信するメッセージがあるときに必要に応じてソケット接続を開閉します。したがって、既存のセッションに再接続を実行すると、screen -rソケットを使用して既存のプロセスに接続し、さまざまな設定を交渉し、すべてがうまくいったら適切な端末に接続してソケットを閉じます。

つまり、を実行すると、2つのプロセスが通信している間(頻繁には発生しません)、誤って接続しない限り、2つのnetstatプロセスを接続するオープンソケットは表示されません。screenscreen

関連情報