새로운 가상 터미널로 전환하지 않고 백그라운드에서 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( 와일드카드가 포함된 매개변수를 엉망으로 만들 수 있고 startx의 또 다른 특성으로 인해 절대 경로를 전달해야 하기 때문에 별도의 스크립트가 필요합니다 . 또는 직접 호출하여 직접 설정하세요.)sh -c …startxxinitXAUTHORITY

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를 사용하는 것입니다. 이는 여전히 좋은 변화입니다.

관련 정보