/dev/console
Linux 시스템에서 , /dev/tty
및 의 차이점은 무엇입니까 /dev/tty0
?
각각의 용도는 무엇이며 어떻게 비교합니까?
답변1
/dev/tty Current TTY device
/dev/console System console
/dev/tty0 Current virtual console
옛날에는 /dev/console
sysadmin 콘솔이 있었습니다. TTY는 서버에 연결된 사용자의 직렬 장치입니다.
Now /dev/console
및 /dev/tty0
현재 디스플레이를 나타내며 일반적으로 동일합니다. 를 추가 console=ttyS0
하여 grub.conf
. 그 후 당신은 /dev/tty0
모니터 /dev/console
이고 /dev/ttyS0
.
/dev/tty
와 사이의 차이점을 보여주는 연습 /dev/tty0
:
Ctrl++ 를 눌러 Alt두 번째 콘솔로 전환합니다 F2. root
.type 으로 로그인하세요 sleep 5; echo tty0 > /dev/tty0
. Enter세 번째 콘솔로 전환하려면 +를 길게 누르세요 . 이제 +를 눌러 두 번째 콘솔로 다시 전환하세요. Enter 키를 누르고 세 번째 콘솔로 전환합니다.AltF3AltF2sleep 5; echo tty > /dev/tty
Enter
tty
이는 프로세스가 시작된 콘솔이며 tty0
항상 최신 상태인 콘솔임을 알 수 있습니다 .
답변2
/dev/console
시작 시 매개변수로 설정할 수 있는 가상 장치 집합입니다. 직렬 장치나 가상 콘솔로 리디렉션될 수 있으며 기본적으로 해당 콘솔로 리디렉션됩니다/dev/tty0
. 여러console=
옵션이 커널에 전달되면 콘솔 출력이 여러 장치로 이동됩니다./dev/tty[0-N]
(가장 높은 속성 TTY 번호(예: 63))는 사용N
하도록 전환한 가상 콘솔 중 하나 입니다.controlaltF1/dev/tty0
또한 기본적으로 가상 콘솔도 있습니다./dev/tty
콘솔을 연 프로세스와 연결된 콘솔(물리적, 가상 또는 의사 장치)의 별칭입니다. 다른 장치와 달리 쓰기에는 루트 권한이 필요하지 않습니다. 또한 배치 프로세스처럼 시작된 프로세스는 어떤 프로세스와도 연결되지 않기 때문에cron
사용할 수 없습니다 ./dev/tty
이러한 프로시저?
에는 출력 열에 하나가 있습니다.TTY
ps -ef
답변3
/dev/콘솔
https://github.com/torvalds/linux/blob/master/Documentation/admin-guide/serial-console.rst
Linux에서는 다음 명령을 사용하여 커널 콘솔을 구성할 수 있습니다.console=
부팅 옵션. 호출 커널 코드는 printk()
예를 들어 장치가 로드되거나 오류가 발생할 때 여기에 메시지를 쓸 수 있습니다. 이러한 메시지는 커널에 의해서도 버퍼링됩니다. (당신은 또한 볼 수 있습니다dmesg
). 콘솔 장치를 찾아서 시작하면 이전에 버퍼링된 모든 메시지를 받습니다.
여러 콘솔을 구성하기 위해 여러 번 전달할 수 console=
있으며 메시지는 모든 콘솔에 기록됩니다. 분명히 각 "유형"에 대해 하나의 콘솔만 선택할 수 있습니다. console=ttyS0
및 을 둘 다 사용할 수는 없습니다 console=ttyS1
.
커널 문서에서는 /dev/console
번호가 매겨진 문자 장치를 지정합니다 (5,1)
. 이 문자 장치를 열면 콘솔 목록의 마지막 tty인 "기본" 콘솔이 열립니다. 커널이 아닌 첫 번째 프로세스는 init
"PID 1" 이라고 하며 /dev/console
표준 출력, 표준 오류 및 표준 입력에 대한 연결로 시작됩니다.
tty 콘솔이 없는 경우 열면 /dev/console
오류 ENODEV
("해당 장치 없음")가 반환됩니다. 커널은인쇄메시지를 녹음 init
하고 시작하세요. tty 장치가 아닌 커널 콘솔의 예는 다음을 참조하세요.netconsole
또는 내가 가장 좋아하는 콘솔라인 프린터.
를 읽어서 tty 콘솔 목록을 볼 수도 있습니다 /sys/class/tty/console/active
. 시스템 문서지적첫 번째표시된 장치는 기본 콘솔입니다. 목록은 실제로 커널 명령줄의 반대 순서입니다. 이것현재 커널 문서표시된 마지막 장치가 기본 또는 "활성" 콘솔이라고 잘못 기술되었습니다. 어떤 이유로 이 파일을 폴링하여 변경 사항을 확인할 수 있습니다(콘솔 장치가 제거된 경우?).
내부에 하나systemd-nspawn
컨테이너 내에서 표준 /dev/console
파일은 PTY(의사 터미널 장치)로 대체됩니다. 이는 가상 터미널 장치로 가장 잘 설명됩니다. 동적으로 생성되며 그래픽 터미널 에뮬레이터(예: GNOME 터미널) 및 원격 액세스(예: ssh
.
/dev/tty0
리눅스 TTY장치 노드 tty1
Pass는 tty63
가상 터미널입니다. VT 또는 가상 콘솔이라고도 합니다. 물리적 콘솔 장치 드라이버 위에 여러 콘솔을 에뮬레이션합니다. 한 번에 하나의 가상 콘솔만 표시되고 제어됩니다. chvt
, Ctrl+Alt+F1 등 기능 키를 사용하여 활성 터미널을 전환 할 수 있습니다 .
를 사용하여 현재 VT를 읽고 쓸 수도 있습니다 /dev/tty0
. tty0
예를 들어 명시적으로 선택하지 않은 경우 일반적인 커널 콘솔입니다. "시스템은 먼저 VT가 실행되는 VGA 카드를 찾은 다음 직렬 포트를 찾습니다." 콘솔을 특정 VT(예: )로 설정할 수도 있습니다 console=tty1
.
"시스템에 VGA 카드가 없으면 첫 번째 직렬 포트가 자동으로 콘솔이 됩니다." "직렬 콘솔"과 같은 것이 ttyS0
아마도 가장 일반적인 대체 수단일 것입니다 tty0
. 직렬 콘솔에서 VT 시스템을 사용할 수 없습니다.
/dev/tty
/dev/tty
POSIX에서 지정한 세 가지 표준 장치 파일 중 하나입니다.( /dev/
POSIX에서 지정한 세 개의 디렉토리 이름 중 하나) 이를 여는 것은 현재 프로세스의 제어 터미널을 여는 것과 같습니다. 프로세스가 처음 터미널을 열 때 제어 터미널을 설정하고,적어도 리눅스에서는. 예를 들어 에서는 로 init
인용됩니다 /dev/console
.
제어 터미널에서 분리하는 것은 전통적으로 백그라운드 프로세스를 시작하는 데 필요한 단계 중 하나입니다.시스템 로그 데몬. 백그라운드 프로세스가 되는 단계는 특히 제어 터미널에서 벗어나는 단계가 매우 복잡합니다.설정값시스템 호출. 최신 시스템에서는 init 시스템(예: systemd)이 먼저 제어 터미널 없이 서비스를 시작합니다.