한시간 정도 구글링해도 안나오는데믿다실제로 이전에는 아무도 이 질문을 한 적이 없습니다…
그래서 TTY1에서 실행되는 스크립트가 있습니다. 이 스크립트를 사용하여 TTY2에서 임의의 프로그램을 시작하려면 어떻게 해야 합니까?
tty
현재 어떤 TTY가 사용 중인지 알려주는 것을 발견했습니다 .writevt
다른 TTY에 텍스트 한 줄을 쓰는 것으로 나타났습니다 .chvt
이것이 현재 표시된 TTY를 변경하는 것으로 나타났습니다 .
하고 싶지 않다전시하다TTY2. 메인 스크립트가 정상적으로 계속 실행되기를 원하지만 수동으로 TTY2로 전환하면 두 번째 프로그램과 상호 작용할 수 있습니다.
답변1
setsid sh -c 'exec command <> /dev/tty2 >&0 2>&1'
/dev/tty2
다른 것이 다른 TTY( 이 경우) 를 사용하지 않는 한 이 방법은 작동합니다. 여기에는 getty
누군가가 로그인하기를 기다리는 하나의 프로세스가 포함됩니다. TTY에서 입력을 읽는 여러 프로세스가 있습니다.~ 할 것이다예상치 못한 결과가 발생합니다.
setsid
새 세션에서 명령을 시작하는 일을 담당합니다.
출력 줄 바꿈에 캐리지 리턴 등이 추가되도록 "요리 모드"를 켜는 등 설정을 올바르게 지정 하려면 주의를 command
기울여야 합니다.stty
onlcr
답변2
일반적으로 두 번째 tty에서는 로그인 프로그램이나 쉘(bash 등)이 실행되고 있습니다. 상호 작용을 원할 경우 로그인 프로그램을 사용자 프로그램으로 바꾸거나 명령줄에서 실행된 것처럼 프로그램을 실행하도록 쉘에 지시해야 합니다.
tmux
더 간단한 해결책은 두 번째 화면에 로그인한 후 세션을 시작한 다음 다음을 사용하는 것 같습니다 .
tmux send yourcommand ENTER
tmux
두 번째 터미널로 전환한 후 표시되는 세션에서 프로그램을 시작합니다.
답변3
방금 다음과 같은 사실을 발견했습니다.
부팅 시 2개의 tty에서 애플리케이션을 시작하는 방법은 무엇입니까?
댓글 중 하나에서 이라는 명령이 언급되었습니다 openvt
. 이 명령은 제가 원하는 작업을 정확하게 수행하는 것 같습니다!
http://linux.about.com/library/cmd/blcmdl1_openvt.htm
다른 사람이 모르는 한, 내 생각엔이것이 작업을 수행하는 "올바른"방법일 수 있습니다.
(방금 시도했는데 잘 작동하는 것 같습니다. getty
실행 중에도 사용되지 않은 다음 터미널을 선택합니다. 터미널로 전환하고 로그인을 시도할 때까지 VT가 "열리지" 않는 것 같습니다...)
답변4
다른 tty에서 bash를 시작하십시오:
setsid agetty --autologin root --noclear 19200 ttyS1 linux