현재 사용중인 tty를 확인하는 방법은 무엇입니까?


22

우리 시스템에는 7 개의 터미널이 있습니다. tty7GUI 기반입니다.

현재 어떤 tty를 사용하고 있는지 어떻게 알 수 있습니까?

tty1, tty2 .... tty6처럼?


댓글에서 "pts"라고 주장하는 이유는 무엇입니까? 그것은 당신이 여기서 묻는 것과는 완전히 다릅니다. GUI의 세션은 tty가 아닙니다.
Rinzwind

1
나는이 개념에 대해 혼란스러워하고, 그 이유
luv.preet

답변:


30

이것을 알아내는 몇 가지 방법이 있습니다. 나는 함께 갈 것 who am i(하지 who) 명령 :

$ who am i
ravexina    tty2        2017-04-10 11:19 (:0)

그래픽 터미널에 있으면 다음과 같이 반환됩니다.

ravexina    pts/0        2017-04-10 1:19 (:0)

그래픽 터미널 결과를 사용하는 ssh 세션에서 결과는 동일하지만 (: 0) 대신 내 컴퓨터 IP (192.168.xx)를 얻습니다. 같은 다른 명령 w, who, pgrep, ps, 등이 너무 도움이됩니다.

예를 들어 tty내 그래픽 인터페이스가 실행중인 위치 를 찾으려면 다음을 수행하십시오.

ps $(pgrep Xorg)

내 경우에는 gdm 또는 slim과 같은 디스플레이 관리자를 사용하지 않기 때문에 다음과 같이 생성됩니다.

 PID  TTY      STAT   TIME COMMAND
 1693 tty1     Sl     0:05 /usr/lib/xorg/Xorg

4
+1, mate-terminal who am i에서 아무것도 반환하지 않고을 whoami반환 zanna하지만 ( who모든 세션 을 반환 하는 동안 (다른 에뮬레이터가와 다른 출력을 생성한다는 것을 알았던 관련 질문 (답변이 없음)이 기억됩니다 who)).
Zanna

graphic은 항상 tty7을 사용합니다. 이는 그래픽 지원을 제공하는 유일한
것이므로

1
@ 잔나 나는이 상황에 직접 직면하지만 언급 할 가치가 있다고 생각합니다.
Ravexina

1
어쨌든, who am i항상 vt에서 잘 작동하며 pgrep매우 똑똑합니다 ( $()명령 하위 구문에 구문 을 사용하고 싶을 수도 있습니다 -마크 틱에서 약간 혼란 스러울 수 있습니다) ...
잔나

1
@ luv.preet 그것은 당신의 질문의 범위를 벗어 났지만 pts와 tty의 차이점을 참조하십시오 :)-이 게시물이 중복되는 게시물에는 멋진 답변이 있습니다
Zanna

14

tty명령을 사용하십시오 .

내가 옳다면 이것은 참조입니다.

/dev/tty1 - tty1
/dev/tty2 - tty2
/dev/tty3 - tty3
/dev/tty4 - tty4
/dev/tty5 - tty5
/dev/tty6 - tty6

showinng pts / 18입니다.
luv.preet

이 pt는 tty에서 실행 중일 수 있습니다. 어떻게 알 수 있습니까?
luv.preet

5
@ luv.preet 터미널입니다. "pts와 tty의 차이점"을 참조하십시오 .
차이 티 렉스

4
ptsGUI 또는 SSH를 통해 터미널을 사용하고 있음을 의미합니다.
lithium_js

3
그것에 대해 새로운 질문을해야합니다.
차이 티 렉스

6

물러서서 혼란으로 시작합시다. tty 란 무엇입니까? 원래 tty는 유리 텔레타이프가 된 텔레타이프 (teletype)의 약어로, 어떤 터미널이나 하나의 시리얼 포트 (특히 시리얼 포트)가되었습니다. 그런 다음 의사 tty와 가상 tty를 얻습니다. 낡은 유닉스 핸즈는 가상 터미널 (ssh 및 telnet), 가상 터미널 (xterm 등) 및 터미널 멀티플렉서 (screen and tmux)에 사용되는 의사 tty에 익숙합니다. Pseudo ttys는 시간이 지남에 따라 다양한 이름 지정 체계를 가지고 있지만 현재는 / dev / pts / 0과 같은 이름을 사용합니다. 반면 가상 tty는 가상 콘솔과 연관되어 있습니다. 특히 제어 Alt 기능 키를 사용하는 경우 각각 가상 tty와 쌍을 이루는 가상 콘솔을 전환합니다.

따라서 의사 tty (또는 텍스트 모드를 사용할 때 가상 tty)를 찾아야하는 경우 유사 종류의 솔루션이 who am i있거나 ps ax|grep $$의사 tty가 표준 io에서 열리므로 여러 가지 방법으로이를 쉽게 찾을 수 있습니다. 대부분의 경우 io가 리디렉션 될 때도 작동하는 다른 방법이 있습니다. 또한 그래픽 터미널 에뮬레이터 또는 터미널 멀티플렉서를 사용하지 않는 한 직렬 포트 및 가상 tty를 사용할 때 올바른 작업을 수행하는 이점도 있습니다.

그러나 가상 콘솔을 식별하려면 어떻게해야합니까? sudo fgconsole대화 형 사례에 유용 할 수 있습니다. 또는 전환은 일반적으로 충분히 빠르기 때문에 콘솔을 걷는 것입니다. 비 대화식 또는 비전 경적 인 경우에 안정적으로 작동하는 프로그래밍 방식을 알지 못합니다.

가상 콘솔에 안정적으로 대답 할 수없는 예를 살펴 보겠습니다. 내가 알파 앞에 앉아있는 컴퓨터에는 tty2 (: 1)에서 실행되는 Xserver가 있고 두 개의 xterm과 vncviewer를 여는 세 개의 창이 있습니다 (bravo : 2에 연결됨). 하나의 xterm은 화면을 실행하고 다른 하나는 ssh charley를 실행 중입니다. 화면에 두 개의 창이 열려 있고 ssh 델타와 누가 (열 2에서 의사 tty를 올바르게 식별하고 힌트를 제공하는 사람)(:1:S0) 번째 X 서버에 연결된 첫 번째 화면 세션에 연결되어 있음을 알려주는 열 5 를 합니다. 가상 콘솔 정보는 제공하지 않습니다). ssh 세션을 통해 누가 실행하면 힌트가 나타납니다.(alpha)이것은 ssh 세션이 시작된 머신을 식별하며 원격 세션에 비교적 좋습니다. 의사 tty에 연결되는 것에 대한 정보는 거의 없지만 (가상 콘솔이나 원격 tty 정보를 사용할 수 없음) 최소한 원격 호스트가 식별됩니다. 화면 세션을 분리 할 수 ​​있으므로 화면에 대한 정보가 잘못 될 수 있으며, vnc 세션과 로컬 세션의 유일한 차이점은 디스플레이 번호이므로 vnc는 유용한 정보를 전혀 제공하지 않습니다. 대부분의 경우 : 0이 tty7에 있지만 항상 그런 것은 아니며 bravo에 그래픽 카드가 전혀없고 : 0이 vnc 세션 (로컬 콘솔이라고 생각하기 때문에 누가 혼동하는지)으로 가정하지는 않습니다. tty7을 그래픽 세션으로 사용하는 시스템은 없습니다. 왜냐하면 (반대가 아니라) tty7 (및 tty5)에 로그를 덤프하기 때문입니다. tty6 및 tty8)은 다른 곳에서 그래픽 세션을 수행합니다. 그러나 대기 화면은 직렬 케이블을 통해 세션을 설정할 수있는 터미널 프로그램 역할을 할 수도 있습니다. 이러한 세션은 누가 실행될 때 무엇을보고합니까? 왜 직렬 포트가 vnc, xterm, ssh, screen 및 usb 직렬 어댑터를 통해 이루어 지든 내 텔레 비디오에 연결되어 있는지 여부.


6

tty에 로그인하면 첫 번째 줄에서 자동으로 사용중인 tty를 보여줍니다.


키보드 조합에서 Ctrl+ Alt+를 누르면 F3검은 색 화면 만 표시되는 경우 주석에 기록한 것처럼 Ctrl+ Alt+ F3를 누르지 않고 컴퓨터를 부팅 할 때 루트 쉘에 액세스 하여 tty를 표시 하는 다른 방법이 있습니다 .

  1. 부팅 중에 BIOS / UEFI 시작 화면 직후에 BIOS를 사용하여 Shift키를 빠르게 누르고 있으면 GNU GRUB 메뉴가 나타납니다. (우분투 로고가 보이면 GRUB 메뉴에 들어갈 수있는 지점을 놓쳤습니다.) UEFI를 사용하여 Esc키를 눌러 GRUB 메뉴로 이동하십시오. 때로는 제조업체의 스플래시 화면이 Windows 부트 로더의 일부이므로 시스템 전원을 켤 때 GRUB 화면으로 바로 이동 한 다음 누를 Shift필요가 없습니다.

  2. 첫 번째 자주색 GNU GRUB 화면에서 ↑ 및 ↓ 키로 Ubuntu대한 고급 옵션을 선택 하고를 누릅니다 Enter. 커널 옵션 목록이있는 또 다른 자주색 GNU GRUB 메뉴 메뉴가 나타납니다.

  3. 위에서 두 번째 항목 ( 설명에서 복구 모드 가있는 항목)을 선택할 때까지 아래쪽 화살표 키 를 누른 다음을 누릅니다 Enter.

    이제이 복구 메뉴가 나타납니다.

    복구 메뉴

  4. 키를 아래로 스크롤 화살표 사용하여 루트 다음을 누릅니다 Enter.

    이제 다음과 같은 루트 프롬프트가 나타납니다.

    root@ubuntu:~#
    
  5. 이 단계에서는 읽기 전용 파일 시스템이 있어야합니다. 쓰기 권한으로 다시 마운트해야합니다.

    mount -o rw,remount /  
    

    이제 터미널에서와 동일한 명령을 실행할 수 있습니다.


이 항상 tty1을 엽니 다?
luv.preet

아니요, tty를 열지 않습니다. 대신 하드 드라이브에 설치 한 Ubuntu의 루트 파일 시스템을 쓰기 권한이있는 대화식 쉘로 마운트하여 명령을 실행할 수 있습니다.
karel

3

제공된 다른 답변 이외의 것을 돌보는 것 같습니다. sudo fgconsole 어떤 실제 tty가 현재 활성화되어 있는지 확인 하십시오 .


@karel 현재 TTY 발표를 놓친 상황을 쉽게 상상할 수 있습니다. 예를 들어 bash 프로파일은 화면을 지 웁니다. 로그인 직후뿐만 아니라 언제든지 사용할 수있는 명령을 제공했습니다. WRT Ctrl + Alt + F1이 작동하지 않습니다. 빠른 해결 방법이 있습니다. chvt 또는 openvt를 사용하십시오.
marian adam

그리고 BTW, sudo로 실행하십시오. 그래서 오류가 발생했습니다.
marian adam

1

tty 명령을 사용하면 Linux 및 macOS에서 작동하며 읽을 수있는 tty의 이름 만 읽을 수있는 매우 간단한 출력을 제공합니다.

예:

$ tty
/dev/pts/0

스크립트를 작성하거나 프롬프트에 포함시키는 것은 쉽습니다. 예 :

$ PS1='`tty`: '
/dev/pts/0: _

이런 식으로 어느 터미널에 있는지 항상 알 수 있습니다.


1

GUI를 제외하고는 pt를 얻는다면 원하는 출력을 보여줍니다.

ls -l `tty` | awk '{print $10}'
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.