실행 중인 프로세스를 검사할 때 ps 명령어 출력에서 TTY 필드를 발견하게 될 것입니다. 이 필드는 해당 명령을 실행한 제어 터미널을 나타내므로 중요합니다. 이 개념을 이해하는 것은 프로세스를 효과적으로 관리하는 데 핵심입니다.
TTY 란 무엇인가
TTY 는 '텔레타이프 (Teletype)'의 약자로, 역사적으로 컴퓨터와 상호 작용하기 위한 물리적 장치를 의미했습니다. 현대의 Linux 시스템에서 TTY 는 프로세스에 대한 표준 입력과 출력을 제공하는 터미널을 지칭합니다.
만나게 될 터미널에는 크게 두 가지 유형이 있습니다. 터미널 장치와 의사 터미널 장치입니다.
터미널 장치 대 의사 터미널 (Pseudo-Terminal)
진정한 터미널 장치는 명령을 입력하고 출력을 직접 볼 수 있게 해주는 기본 콘솔입니다. 가상 콘솔로 전환하여 이를 경험할 수 있습니다. 많은 시스템에서 Ctrl-Alt-F1을 눌러 TTY1 에 접근할 수 있습니다. 여기서는 그래픽 인터페이스 없이 순수 텍스트 기반 환경에서 로그인 프롬프트를 보게 됩니다. 이것이 바로 고전적인 터미널 장치입니다. 그래픽 세션으로 돌아가려면 일반적으로 Ctrl-Alt-F7을 사용할 수 있습니다 (정확한 키 조합은 다를 수 있습니다).
반면에, 의사 터미널 (PTS) 은 가장 흔하게 사용하는 것입니다. 그래픽 데스크톱 환경 내에서 터미널 애플리케이션을 열 때 PTS 를 사용하는 것입니다. 이들은 창 내에서 터미널을 에뮬레이트합니다. 셸의 ps tty 출력을 확인하면 TTY 가 pts/*로 나열된 것을 볼 수 있습니다.
제어 터미널의 역할
대부분의 프로세스는 제어 터미널에 바인딩되어 있습니다. 이는 프로세스의 수명 주기가 해당 프로세스를 시작한 터미널 세션과 연결되어 있음을 의미합니다. 예를 들어, 터미널 창에서 find와 같은 프로그램을 실행한 다음 해당 창을 닫으면 find 프로세스도 함께 종료됩니다.
제어 터미널이 없는 프로세스
데몬 (daemon) 이라고 불리는 일부 프로세스는 백그라운드에서 실행되며 시스템 서비스를 관리하도록 설계되었습니다. 이러한 프로세스는 시스템 부팅 시 시작되어 시스템 종료 시에만 중지되는 경우가 많습니다.
이들이 실수로 종료되는 것을 방지하기 위해 데몬은 제어 터미널에 연결되지 않습니다. ps 사용법을 배워 이러한 프로세스를 검사할 때 TTY 열에 물음표 (?) 가 표시됩니다. 이 ?는 해당 프로세스가 제어 터미널을 가지고 있지 않으며 사용자 세션과 독립적으로 실행되고 있음을 나타냅니다.