![새로운 가상 터미널로 전환하지 않고 백그라운드에서 startx를 실행하세요.](https://linux55.com/image/97558/%EC%83%88%EB%A1%9C%EC%9A%B4%20%EA%B0%80%EC%83%81%20%ED%84%B0%EB%AF%B8%EB%84%90%EB%A1%9C%20%EC%A0%84%ED%99%98%ED%95%98%EC%A7%80%20%EC%95%8A%EA%B3%A0%20%EB%B0%B1%EA%B7%B8%EB%9D%BC%EC%9A%B4%EB%93%9C%EC%97%90%EC%84%9C%20startx%EB%A5%BC%20%EC%8B%A4%ED%96%89%ED%95%98%EC%84%B8%EC%9A%94..png)
startx
새로운 가상 터미널에서 새로운 X 서버를 생성하는 기능. 그러나 백그라운드에서 실행하더라도, 즉. sudo startx &
, 여전히 자동으로 새 가상 터미널로 전환됩니다. 기존 터미널을 유지하면서 새로운 가상 터미널을 생성할 수 있나요?
또한 새 터미널의 파일 이름을 어떻게 알 수 있나요? (이전에는 tty
새 창을 사용하여 체크인할 수 있었는데, 이전 창에서 동일한 기능을 어떻게 구현하나요?)
답변1
X.org를 사용한다고 가정하면 이는 불가능해 보입니다. X 서버 지원옵션라고 하는데 -novtswitch
이는 X 서버가 시작될 때가 아니라 종료될 때만 적용됩니다. 논의를 보면페도라 버그 #246267, 이 옵션은 시작 시에도 작동하는 것으로 보이지만 이로 인해 X 서버가 많은 하드웨어에서 충돌을 일으키기 때문에 제거되었습니다. X 서버는 시작 시 비디오 하드웨어에 액세스해야 합니다.
차선책은 다른 vt로 잠시 플래시를 허용한 다음 다시 전환하는 것입니다. Linux에서는 다음을 사용할 수 있습니다.openvt
새 가상 터미널에서 명령을 실행하고chvt
다시 변경하세요.
~/.xinitrc.chvt
다음을 포함하는 스크립트를 만듭니다.
#!/bin/sh
echo "New X session running on vt$X_FGCONSOLE" >"$ORIGINAL_TTY"
chvt "$ORIGINAL_FGCONSOLE"
exec ~/.xinitrc
그런 다음 실행
ORIGINAL_FGCONSOLE=$(fgconsole) ORIGINAL_TTY=$(tty) openvt -s -- sh -c 'export X_FGCONSOLE=$(fgconsole); startx ~/.xinitrc.chvt -- vt$X_FGCONSOLE'
~/.xinitrc.chvt
( 와일드카드가 포함된 매개변수를 엉망으로 만들 수 있고 startx의 또 다른 특성으로 인해 절대 경로를 전달해야 하기 때문에 별도의 스크립트가 필요합니다 . 또는 직접 호출하여 직접 설정하세요.)sh -c …
startx
xinit
XAUTHORITY
fgconsole
이 스크립트를 실행하는 위치에 따라 을(를) 열 수 있어야 /dev/console
하지만 다른 사용자(실제로 루트)가 이를 가지고 있는 경우 실행 권한이 없을 수 있습니다 ("콘솔을 참조하는 파일 설명자를 가져올 수 없습니다"). 그렇지 않으면 원래 콘솔로 돌아가는 방법을 찾을 수 없습니다. 루트 액세스 권한이 있는 경우 한 가지 해결책 ORIGINAL_FGCONSOLE=$(fgconsole) …
은
ORIGINAL_FGCONSOLE=$(sudo fgconsole)
다음 줄을 실행하고 추가하여 계정 fgconsole
에 루트로 실행할 수 있는 권한을 부여합니다.visudo
zzy ALL = (root) NOPASSWD: /bin/fgconsole
귀하의 계정에 적용되는 다른 줄 뒤에. 프로그램에 버그가 없는 한 이는 안전합니다 fgconsole
.
1 Linux를 사용한다면 X.org를 사용하는 것이고, Linux를 사용하지 않는다면 X.org를 사용하는 것입니다. 이는 여전히 좋은 변화입니다.