여러분이 사용하는 리눅스 환경은 기본적으로 TTY (Teletypewriter) 위에 그러져 있다.
즉 데스크탑 gui (xwindows) 환경은 실질적으로 '콘솔' 위에 올려져 있는 형태 인 것이다.
콘솔(consol)은 CLI (Command line interface) 혹은 CUI라고도 불리우며 컴퓨터를 운용하기 위한 목적으로 텍스트를 사용자와 컴퓨터가 주고 받는 방식의 인터페이스를 말한다.
정확하게 말하자면 xwindows 데스크탑 환경에서 작동하는 콘솔은 pts/1에 올려져 있다.
이것이 무슨 말인지 지금부터 차근히 설명해 보겠다.
전체 콘솔은 다음과 같은 구성을 가지고 있다.
/dev (device)
→ TTY (일반 CLI 콘솔)
→ TTYs (시리얼 tty)
→ PTS (기본 xwindows를 위한 가상 콘솔)
→ PTY ( 외부의 원격 접속을 위한 가상 콘솔)
이와 같은 환경은 파일시스템 에서도 확인이 가능하다.
// 현재 세션을 확인한다.
$ tty
/dev/pts/1
* 보시다시피 xwindwos 상테의 CLI는 PTS에 속한다.
// /dev 폴더를 출력한다.
$ ls /dev
autofs log ram8 tty21 tty58 ttyS8
block loop-control ram9 tty22 tty59 ttyS9
bsg loop0 random tty23 tty6 ttyprintk
btrfs-control loop1 rfkill tty24 tty60 uhid
bus loop2 rtc tty25 tty61 uinput
char loop3 rtc0 tty26 tty62 urandom
console loop4 sda tty27 tty63 usb
core loop5 sda1 tty28 tty7 userio
cpu loop6 sda2 tty29 tty8 vboxdrv
cpu_dma_latency loop7 sda3 tty3 tty9 vboxdrvu
cuse lp0 sda4 tty30 ttyS0 vboxnetctl
disk mapper sdb tty31 ttyS1 vboxusb
dm-0 mcelog sdc tty32 ttyS10 vcs
dri mem sdc1 tty33 ttyS11 vcs1
ecryptfs memory_bandwidth sdc2 tty34 ttyS12 vcs10
fb0 mqueue sdc5 tty35 ttyS13 vcs2
fd net sg0 tty36 ttyS14 vcs3
full network_latency sg1 tty37 ttyS15 vcs4
fuse network_throughput sg2 tty38 ttyS16 vcs5
fw0 null shm tty39 ttyS17 vcs6
hidraw0 parport0 snapshot tty4 ttyS18 vcs8
hidraw1 port snd tty40 ttyS19 vcsa
hidraw2 ppp stderr tty41 ttyS2 vcsa1
hpet psaux stdin tty42 ttyS20 vcsa10
hugepages ptmx stdout tty43 ttyS21 vcsa2
hwrng pts tty tty44 ttyS22 vcsa3
i2c-0 ram0 tty0 tty45 ttyS23 vcsa4
i2c-1 ram1 tty1 tty46 ttyS24 vcsa5
i2c-2 ram10 tty10 tty47 ttyS25 vcsa6
i2c-3 ram11 tty11 tty48 ttyS26 vcsa8
i2c-4 ram12 tty12 tty49 ttyS27 vfio
i2c-5 ram13 tty13 tty5 ttyS28 vga_arbiter
i2c-6 ram14 tty14 tty50 ttyS29 vhci
i2c-7 ram15 tty15 tty51 ttyS3 vhost-net
initctl ram2 tty16 tty52 ttyS30 zero
input ram3 tty17 tty53 ttyS31
kfd ram4 tty18 tty54 ttyS4
kmsg ram5 tty19 tty55 ttyS5
kvm ram6 tty2 tty56 ttyS6
lightnvm ram7 tty20 tty57 ttyS7
위의 /dev 폴더의 출력을 보면 tty들이 상당히 많은 것을 볼수가 있으며 pts 폴더 또한 확인이 가능하다.
다른 tty의 접근은 키보드로써 바로 접근이 가능하다.
'Alt + Ctrl + F1' 키를 눌러 보도록 하자.
그러면 화면이 바뀌면서 tty1 콘솔 모드로 진입 하게 된다.
그렇다면 차례 차례 F6까지 눌러 보도록 하자.
'Alt + Ctrl + F7' 까지 눌러보면 다시 원래의 XWINDOWS(pts/n)환경으로 돌아온 것을 알수가 있다.
사용 가능한 콘솔은 tty6 까지이고 xwindows 부터 사용하는 콘솔은 pts 에 속한다.
※ 하지만 만약 보안 툴인 selinux 를 'ecforce'로써 작동하여 사용하고 있다면 사용자도 다른 tty로 접근이 불가할 뿐만이 아니라 다른 pts, pty에 외부에서의 접근이 불가 하다.
즉 사용자도 tty를 사용하기 위해서는 selinux를 'permissive'로 정책을 바꿔줘야 한다.
해당 방법은 다음 포스트 에서 확인 할수 있다.
물론 tty에서 xwindwos 진입이 불가 한 것은 아니다.
// 먼저 'Alt + Ctrl + F1' 키를 눌러 tty1에 진입 하고 로그인 한다.
// tty를 확인한다.
$ tty
/dev/tty1
* tty가 1로 정상적으로 뜨고 있다.
// tty1 콘솔에서 xwindows로 진입해 본다.
$ startx
// 새로운 xwindows에서 터미널을 열고 tty를 확인한다.
$ tty
/dev/pts/(number)
* xwindows로 진입하자 tty가 아닌 마찬가지 다른 pts로 뜨는 것을 확인 할 수 있다.
앞서 말했듯이 xwindows에서 작동하는 가상 콘솔은 pts로써 동작 한다고 말했지만 이것은 꼭 다른 xwindows 에서만 추가 되는 것이 아니라
동일한 xwindows 데스크탑 에서 터미널-gui 을 열때 마다 추가 된다.
그렇다면 한 번 실험을 해보도록 해보자. ( 환경은 tty7-pts/1 그대로 한 곳에서만)
// 터미널 창을 여러개 띄운다.
$ ps -leat
(-t 옵션은 terminal 현황 출력을 의미한다.)
F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND
4 0 1907 1862 20 0 273452 56188 - Rsl+ tty7 0:09 /usr/lib/xo
4 0 2229 1 20 0 24708 1860 - Ss+ tty1 0:00 /sbin/agett
0 1000 2578 2573 20 0 31320 4992 wait Ss pts/1 0:00 bash XDG_SE
0 1000 3617 2578 20 0 34936 3232 signal T pts/1 0:00 systemctl s
0 1000 3624 3617 20 0 18424 788 signal T pts/1 0:00 pager LESSO
0 1000 3843 2573 20 0 31320 4812 wait_w Ss+ pts/7 0:00 bash XDG_SE
0 1000 3860 2573 20 0 31320 4828 wait_w Ss+ pts/8 0:00 bash XDG_SE
0 1000 3876 2573 20 0 31320 4868 wait_w Ss+ pts/9 0:00 bash XDG_SE
0 1000 3909 2578 20 0 37684 1540 - R+ pts/1 0:00 ps -leat X
* 현재 pts가 1, 7, 8, 9 총 4개가 있다. 이것은 사용자가 터미널 창을 4개를 띄웠다는 것을 의미한다.
// 이번에는 터미널 창 하나를 놔두고 나머지는 전부 종료 한다.
$ ps -leat
F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND
4 0 1907 1862 20 0 277424 59612 - Ssl+ tty7 0:13 /usr/lib/xorg/Xorg -core :0 -seat seat0
4 0 2229 1 20 0 24708 1860 - Ss+ tty1 0:00 /sbin/agetty --noclear tty1 linux
0 1000 2578 2573 20 0 31328 5000 wait Ss pts/1 0:00 bash XDG_SEAT_PATH=/org/freedesktop/Dis
0 1000 3617 2578 20 0 34936 3232 signal T pts/1 0:00 systemctl status ssh.service LESSOPEN=|
0 1000 3624 3617 20 0 18424 788 signal T pts/1 0:00 pager LESSOPEN=| /usr/bin/lesspipe %s G
0 1000 3924 2578 20 0 37684 1488 - R+ pts/1 0:00 ps -leat XDG_VTNR=7 XDG_SESSION_ID=c1
* pts가 1 하나 밖에 남지 않은 것을 확인 할 수 있다.
도움이 되셨다면 '♡' 버튼을 꼭눌러 주시면 감사 하겠습니다.
'리눅스 기초 가이드 > UNIX 시스템 ' 카테고리의 다른 글
[리눅스 가이드] awk 프로그래밍 가이드 1 - 텍스트 파일의 열 불러오기 (0) | 2016.12.19 |
---|---|
[유닉스 기초] 리눅스에서 '환경 변수' 란? 매우 이해하기 쉬운 강의 (0) | 2016.09.14 |
[리눅스 시스템 기초] 파일 리스트를 출력해 주는 'ls'에 대한 모든 것 02 (0) | 2016.08.06 |
[리눅스 시스템 기초] 파일 리스트를 출력해 주는 'ls'에 대한 모든 것 01 (0) | 2016.08.05 |
[유닉스 시스템 기초] chmod 를 통환 각 파일이나 폴더의 권한 속성 변경 방법 (0) | 2016.08.04 |