터미널 에뮬레이터가 서버를 처리합니까?
그렇다면 고객은 누구입니까? 고객을 어떻게 찾을 수 있나요? 감사해요.
netstat
출력에는 lxterminal 프로세스가 포함됩니다. 이것은 터미널 에뮬레이터 프로세스가 Unix 도메인 소켓 기반 서버라는 것을 의미합니까?$ sudo netstat -ap | grep -i lxterminal [sudo] password for t: unix 2 [ ACC ] STREAM LISTENING 28665 1480/lxterminal /run/user/1000/.lxterminal-socket-:0 unix 3 [ ] STREAM CONNECTED 28663 1480/lxterminal unix 3 [ ] STREAM CONNECTED 28661 1480/lxterminal unix 3 [ ] STREAM CONNECTED 28666 1480/lxterminal
서버는 항상(또는 일반적으로?) 데몬화되어 있으므로 제어 터미널이 없습니다. (
?
)가 없는 lx터미널:$ ps aux | grep -i lxterminal t 1480 0.1 0.3 473204 28232 ? Sl Nov21 22:39 lxterminal
답변1
AX 서버는 애플리케이션에 디스플레이 및 입력 장치를 제공하기 때문에 서버입니다.
예를 들어, 애플리케이션은 lxterminal
X 서버에 연결하여 특정 서비스를 요청합니다. 예를 들어:
- 이런 모양과 크기의 창문을 그려주세요
- 사용자가 어떤 키를 눌렀다가 놓았는지 알려주세요.
UNIX 도메인이나 ABSTRACT 또는 TCP 소켓을 통해 X 서버에 연결합니다.
마찬가지로 터미널 에뮬레이터는 터미널 애플리케이션용 서버로 생각할 수 있습니다.
을 사용하면 echo test > /dev/pts/12
애플리케이션 echo
을 다음과 같이 볼 수 있습니다.연결하다터미널 에뮬레이터에(여기에서는 네트워크 소켓이 아닌 의사 터미널을 통해)연결하다이는 대신 쉘 리디렉션을 통해 수행되며 echo
서비스를 요청합니다.테스트를 표시하고 커서를 아래로 이동하세요..
이제 gnome-terminal 및 lxterminal을 포함한 일부 터미널 에뮬레이터에는 처음 호출할 때 데몬을 시작하여 새 터미널 창을 열라는 향후 요청을 처리하는 (성가신 IMO) 기능이 있습니다.
/run/user/1000/.lxterminal-socket-:0
이는 나중에 해당 서버에 연결하여( 귀하의 경우 해당 UNIX 도메인 소켓을 사용하여) 새 터미널 창을 요청하기 위해 호출되며 , 아마도 리소스를 절약하거나 터미널 창 간에 일부 정보를 공유할 수 있습니다.
이 작업을 수행할 때:
cd /tmp && lxterminal -e vim
이미 하나가 lxterminal
실행 중인 동안 두 번째 호출은 서버에 새 창에서 실행하고 lxterminal
현재 디렉터리를 .vim
/tmp
보다 전통적인 방식으로 작동하는 터미널 에뮬레이터를 참조하십시오 xterm
.rxvt
실제로 다음과 같이 할 수도 있습니다.
printf '%s\0' /tmp lxterminal -e vim |
socat -u - 'unix-connect:"/run/user/1000/.lxterminal-socket-:0"'
이는 첫 번째 호출만 호출자의 환경( umask
, cwd
, env vars...를 포함한 전역적 의미의 환경)을 상속하고 후속 호출은 cwd만 가져옴을 의미하기 때문에 이것이 짜증스럽다고 생각합니다.
@JdeBP의 훌륭한 답변에 대한 추가 정보netstat 출력의 lxterminal