~からhttps://unix.stackexchange.com/a/485290/674
出力の下部には
netstat
UNIXソケットがあります。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
サーバーとクライアントのプロセスを常に表示する必要がありますか?
netstat
GNU 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
プロセスを接続するオープンソケットは表示されません。screen
screen