Linux 프로시저와 관련하여 “제어 터미널”이라는 용어를 사용하면 개인이 당황할 수 있습니다. 그러나 이 개념을 이해하는 것은 간단합니다.
제어 터미널이란 무엇인가요?
제어 터미널은 Linux 프로세스의 시작 지점을 구성하며, 셸은 명령이 실행되는 기본 인터페이스입니다. 사용자가 명령을 입력하는 프롬프트를 표시하는 맨 마지막 창이 제어 터미널 역할을 합니다.
제어 터미널의 고유한 특성은 Linux에서 명령 실행을 통해 시작되는 프로세스에 부여됩니다. 이러한 현상은 일반적으로 ‘포킹’이라고 하는 셸의 복제본 생성을 통해 프로세스가 설정된 다음 ‘실행’이라고 하는 원하는 실행 엔티티로 셸을 대체하는 방식으로 인해 발생합니다.
어떤 프로세스에 제어 터미널이 있는지 확인하는 방법
Linux에서 종료 터미널이 있는 프로세스의 가시성은 매우 명확합니다. ps 명령을 사용하면 프로세스를 인식할 수 있습니다.
제어 권한이 있는 터미널을 소유하지 않은 사용자를 포함하여 시스템의 모든 사용자가 실행하는 모든 절차를 “aux” 매개 변수를 활용하여 인식할 수 있습니다.
ps aux
리눅스 기반 시스템에서는 사용자에게 부담을 줄 수 있는 표시되는 정보의 양을 줄이기 위해 파이프라이닝을 활용하는 것이 유리한 경우가 많습니다. 이를 위한 한 가지 방법은 출력을 페이징 가능한 프로그램으로 보내는 것입니다.
ps aux | less
주어진 문장은 일반적으로 디렉토리 계층 구조의 시작 부분에 위치하며 그 안에 저장된 콘텐츠를 나타내는 역할을 하는 이름을 지정하여 파일의 초기 부분을 미리 보기 위해 “head” 명령을 활용할 수 있는 옵션이 있음을 시사합니다.
ps aux | head
앞서 언급한 레이블이 지정된 열은 “TTY”로 표시되며 프로세스의 제어 터미널 지정을 나타내는 역할을 합니다. 프로세스에 이러한 터미널이 있는 경우, “x”가 터미널 번호 또는 “pts”를 나타내고 그 앞에 슬래시(“/”)를 붙인 후 의사 터미널 라인 번호가 뒤따르는 “ttyx” 표기를 표시해야 합니다.
상당수의 터미널은 실제로 터미널 에뮬레이터이므로 의사 터미널 또는 PTY 연결을 사용합니다. 지정에 “pts”가 있으면 실제 또는 가상 콘솔이 아닌 에뮬레이터임을 나타냅니다.
제어 터미널이 없는 프로세스
일반적인 Linux 시스템에서 수많은 프로세스의 TTY 열에 물음표 문자가 나타나는 것은 해당 프로세스에 대한 제어 터미널이 없기 때문에 발생합니다. 왜 이러한 현상이 발생하는지에 대한 질문에 대한 답변은 아직 없습니다.
Linux 운영 체제는 백그라운드에서 데몬 또는 서비스라고 하는 여러 프로세스를 실행할 수 있는 기능으로 잘 알려져 있습니다. 이러한 프로세스에는 웹 서버 및 네트워킹 연결과 같은 기본 작업을 관리하는 기타 서비스가 포함될 수 있습니다. 일반적으로 그래픽 사용자 인터페이스 또는 명령줄 터미널을 통해 시스템과 상호 작용하는 인간 사용자와 달리, 이러한 데몬은 터미널과 직접 상호 작용할 필요가 없으며 독립적으로 작동할 수 있습니다.
데스크톱 환경의 메뉴를 통해 그래픽 애플리케이션을 실행하는 것은 제어 목적으로 터미널의 가용성을 보장하지 않습니다.
시스템을 실행 중인 상태에서 사용자가 로그아웃하면 GNU Screen 또는 tmux와 같은 터미널 멀티플렉서를 사용하여 프로세스를 분리하면 프로세스에 대한 제어 터미널이 손실될 수 있습니다.
“kill” 유틸리티를 사용하면 운영 범위 내에 종료 터미널이 없는 프로세스를 종료하는 데 효과적인 수단입니다.
이제 제어 터미널에 대해 알게되었습니다.
“제어 터미널”이라는 용어는 사용자가 명령을 실행하는 터미널을 의미합니다. 제어 터미널의 존재 여부는 “ps” 명령을 사용하여 쉽게 확인할 수 있습니다. 그러나 수많은 Linux 프로그램은 데몬이라는 특성 또는 터미널 멀티플렉서를 통해 분리되었을 수 있다는 사실 때문에 이 요건에서 제외됩니다.
tmux는 로컬 터미널 세션을 지속할 수 있도록 하는 멀티플렉서이며, 단순한 세션 지속성 유지를 넘어 원격 SSH 연결을 위한 강력한 기능을 제공합니다.