~에서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
. 따라서 프로세스 중 하나를 알고 있으면 이를 보고 다른 측면을 식별할 수 있어야 합니다.
이는 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
두 가지를 동시에 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
소켓을 사용하여 기존 프로세스에 연결하고 다양한 설정을 협상하고 모든 것이 잘되면 적절한 터미널에 연결하고 소켓을 닫습니다.
즉, 를 실행하면 두 프로세스가 통신하는 동안(자주 발생하지 않음) 우연히 연결하지 netstat
않는 한 두 프로세스를 연결하는 열린 소켓이 표시되지 않습니다.screen
screen