새로운 가상 터미널로 전환하지 않고 백그라운드에서 startx를 실행하세요.

새로운 가상 터미널로 전환하지 않고 백그라운드에서 startx를 실행하세요.

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(와일드카드가 포함된 인수를 엉망으로 만들기 때문에 별도의 스크립트가 sh -c …필요 startx하고 startx의 또 다른 단점으로 인해 절대 경로를 전달해야 합니다. 또는 직접 호출하여 직접 xinit설정하십시오 .)XAUTHORITY

이 스크립트를 실행하는 위치에 따라 실행 권한이 없을 수도 있습니다 fgconsole("콘솔을 참조하는 파일 설명자를 가져올 수 없습니다"). 왜냐하면 스크립트를 열 수 있어야 /dev/console하고 다음과 같은 경우에는 그렇게 할 수 없기 때문입니다. 다른 사용자(실제로는 루트)가 이를 소유합니다. 그렇지 않으면 원래 콘솔로 돌아가는 방법을 찾는 방법을 모르겠습니다. 루트 액세스 권한이 있는 경우 한 가지 해결책은 다음 ORIGINAL_FGCONSOLE=$(fgconsole) …으로 교체하는 것입니다.

ORIGINAL_FGCONSOLE=$(sudo fgconsole)

다음 줄을 실행하고 추가하여 계정에 fgconsole루트로 실행할 수 있는 권한을 부여합니다.visudo

zzy ALL = (root) NOPASSWD: /bin/fgconsole

귀하의 계정에 적용되는 다른 줄 뒤에. 프로그램 에 버그가 없으면 안전합니다 fgconsole.

¹ Linux를 사용한다면 X.org를 사용하고, Linux를 사용하지 않는다면 X.org를 사용한다는 점에서 여전히 좋은 변화가 있습니다.

관련 정보