본문 바로가기
OS/Unix

pts, tty(feat. w, who, /dev)

by 코딩하는보기 2024. 1. 2.
728x90
반응형

macOS에서 cmd + space키로 terminal을 열고 아래의 명령어를 입력해보자

tty

 

  • 현재 터미널 장치(TTY)의 경로를 출력하는 명령어
  • 이 명령어를 실행하면 현재 사용자가 작업하고 있는 터미널 장치의 실제 파일 경로를 확인 가능
  • 이 파일 경로는 주로 /dev/pts, /dev/tty, 또는 /dev/console과 같은 형태로 나타난다

who
  • 현재 시스템에 로그인한 사용자 목록을 표시
  • 주로 로그인한 사용자의 이름, 로그인 시간, 터미널(TTY) 정보만을 보여준다
  • 다른 사용자의 상세한 활동 내역은 제공하지 않는다
  • 주로 로그인된 사용자의 확인 및 현재 로그인 상태를 파악하는 데 사용됨

w

  • "w" 명령은 "who" 명령과 유사하지만 더 많은 정보를 제공한다
  • 로그인한 사용자의 이름, TTY 정보, 로그인 시간, 현재 활동(무엇을 실행 중인지), IDLE 시간, CPU 사용률 및 로드 평균(시스템 부하)과 같은 추가 정보를 제공
  • "w" 명령은 현재 로그인한 사용자의 상세한 활동과 부하 정보를 확인하는 데 사용
  • "w" 명령은 "who" 명령의 기능을 포함하면서 추가 정보를 제공하는 명령

 

console사용자 또는 프로세스가 로컬 콘솔(모니터와 키보드를 가진 직접적인 물리적 터미널)을 사용하고 있음을 나타낸다. 즉, 시스템 콘솔에서 로그인한 상태를 말한다. 고로 1개만 할당된다

who로 볼땐 ttys + 숫자

w로 볼땐 tty가 탭으로 생략되서 s + 숫자가 나온다

사실 w나 who 명령어에 대해 포스팅을 할 건 아니었다. 다양한 명령어들로 사용자의 터미널 상태를 볼 수 있다는 걸 말하고 싶었다

 

/dev

그럼 tty를 입력했을 때 앞에 /dev는 뭘까?

개발자니깐 dev?ㅋㅋ 아니다!!

dev(ice)는 Unix 및 Unix-Like 운영체제에서 장치 파일(device file)이나 특별한 디바이스 파일(device special file)을 포함하는 디렉토리이다. 이 디렉토리는 시스템에서 하드웨어 장치와 다른 유형의 파일을 다루기 위한 특별한 위치로 사용된다

궁금하니깐 한번 확인해보자..

ls /dev

OS 수업을 들어봤으면 표준입/출력/에러, 파일 디스크럽터 등을 배운 기억이 있을것이다..!

fd, stdin/stdout/stderr가 있는 것을 볼 수 있다

또한 /dev/null 도 볼 수 있다. 이건 어떠한 출력도 원하지 않을때(출력을 버리고 싶을 때) 사용된다

 

TTY

"w" 명령어에서 보면 TTY탭을 볼 수 있다

TTY는 Teletypewriter의 약어로, 터미널 또는 터미널 장치를 나타낸다

그럼 왜 /dev/ttys로 나오는걸까?

"/dev/ttys" 또는 "/dev/pts"는 Unix-Like 운영체제에서 터미널 디바이스 파일을 나타내는 경로이다. 이 경로는 터미널 장치를 식별하고 관리하기 위해 사용된다

 

터미널은 디바이스 파일이고, /dev라는 디렉토리는 device의 약어이기 때문에

/dev(장치)

ㄴtty(macOS) path

ㄴpts(ubuntu) path

등이 위치하게 될 것이다

 

ttys000: 앞에붙은 ttys는 터미널 세션을 식별하기 위한 표기 방법이고 뒤에 붙은 숫자는 특정 터미널 세션을 고유하게 식별하는 데 사용되며 운영체제가 알아서 할당해준다

 

MacOS

ttys: teletypewriter session

맨 처음에 tty의 결과 스샷에서 /dev/ttys000라고 떴는데

여러 터미널을 열고 tty를 입력하면 어떻게 뜰까?

tty

MacOS에서는 /dev/ttysXXX 순으로 나온다

터미널마다 새로운 세션(프로세스)이 열리며 다른 식별번호가 부여된다

ps 명령어로 확인해보자

ps

 

 

 

Ubuntu

pts: pseudo terminal slave

Docker와 UTM로 확인하는 방법이 있는데, 이번에는 똑같은 GUI 환경을 위해 UTM으로 확인해본다

같은 사이즈의 터미널을 열기 위해 현재 열린 창의 크기를 확인하고, 새 터미널을 창 크기 옵션을 주면서 열어봤다

echo $COLUMNS "columns" X $LINES "lines"
gnome-terminal --geometry=56x5
tty

Ubuntu에서는 /dev/ptsXXX 순으로 나온다

터미널마다 새로운 세션(프로세스)이 열리며 다른 식별번호가 부여된다

Ubuntu에서 ps 명령은 단순히 현재의 터미널에서의 세션만을 보여주므로 다른 ps에 옵션을 줘서 확인해야된다

ps -ef | grep pts

 

 

결론

이번에는 터미널이라는 개념 하나만으로 /dev 즉 시스템 디렉토리, 다른 운영체제에서의 각각 터미널 세션 이름 차이를 알 수 있었다

다음에는 / 폴더 하위 디렉토리를 하나하나 찢어..아니 살펴봐야겠다

개발 너무 재밌고~~

728x90
반응형

댓글