Linux 콘솔 화면 비우기 동작 변경


38

Linux 가상 터미널에서 화면 블랭킹 동작을 어떻게 변경합니까?

예를 들어, X에서 VT로 전환하고 로그인 한 후 시스템을 5 분 정도 그대로두면 화면 보호기처럼 화면이 꺼집니다. 스크린 세이버와 같은 키 누름으로 돌아옵니다.

대부분 시간 제한을 변경하고 싶지만 다른 설정에도 관심이 있습니다.

도움이된다면 내 시스템 중 하나가 스톡 그래픽 드라이버로 Ubuntu 10.04를 실행 중입니다. 프레임 버퍼 장치를 fbset사용하는 콘솔을 보여줍니다 radeondrmfb.


2
이 당신을 도움이되기를 바랍니다 내가 같은 질문을 만났을 때, 나는이 발견 askubuntu.com/questions/138918/...을

답변:


41

setterm에서 @ whitequark의 대답 합리적인 사용자 공간 도구이지만, 전체 이야기 아니에요.

기본 콘솔 블랭킹 동작은 컴파일 타임에 커널에 구워집니다. 부팅시 paramater consoleblank = 로 또는 사용자 공간에서로 구성 할 수 setterm있습니다. 커널 문서 ( kernel-parameters.txt )에서 :

consoleblank=  [KNL] The console blank (screen saver) timeout in
               seconds. Defaults to 10*60 = 10mins. A value of 0
               disables the blank timer.

옵션, 내 우분투 시스템의 기본값 및 영향 범위는 다음과 같습니다.

  • setterm -blank [0-60]; 쿼리 할 때 항상 0을보고합니다. 실제 VT에서 실행할 때 효과적입니다. 모든 실제 TTY에 영향을 미칩니다. VT의 스크린 세션에서 실행될 때는 효과적이지 않습니다.
  • setterm -powerdown [0-60]; 항상 "3]"(??)을보고합니다. 효과가없는 것 같습니다. 우분투 커널은 APM_DISPLAY_BLANK를 활성화하지 않으며 관련이 있습니다.
  • consoleblank=N; 기본값은 600 (10 분)입니다. 모든 실제 VT에 영향을 미칩니다. VT의 스크린 세션에 영향을 미칩니다. 달리는 동안 설정할 방법이 없습니다.

따라서 기본값을 변경하는 옵션은 다음 중 하나입니다.

  1. .bashrcsetterm -blank X 와 같은 쉘 초기화 파일에 (X 단위, 0은 비활성화)를 추가하십시오 .
  2. 추가 setterm -blank X하기 을 /etc/rc.local .
  3. 추가 consoleblank=Y의 매개 변수 목록에 추가하여 커널 명령 행에 (Y 초, 0 비활성화) 을 / etc / 기본 / 애벌레 , 하나 GRUB_CMDLINE_LINUX 또는 GRUB_CMDLINE_LINUX_DEFAULT을 . (을 잊지 마십시오 update-grub.)

4
나는주의하고 싶습니다 setterm -blank X내에서 나를 위해 작동하지 않았다 TMUX ,하지만 종료 할 때 완벽하게 작동 TMUX 명령을 실행하기 전에.
코디 헤스

1
grub2를 부트 로더로 사용하는 경우 / etc / default / grub에이 커널 매개 변수를 추가 GRUB_CMDLINE_LINUX_DEFAULT="consoleblank=0"한 다음로 grub 구성을 업데이트 할 수 있습니다 grub[2]-mkconfig -o /boot/grub/grub.cfg.
user3132194

3]for setterm -powerdown는 절반 만 참입니다 : setterm -powerdown 3 | hexdump -creturns 033 [ 1 4 ; 3 ]. 무엇이 이스케이프 시퀀스를 해석해야하는지 잘 모르겠습니다 ...
Daniel Alder

1
배포판 및 변경 사항을 적용 할 위치에 따라 이러한 옵션 중 일부가 작동하지 않을 수 있습니다. rc.local의 setterm은 RHEL 5와 6에서는 훌륭하지만 7에서는 그렇지 않다는 것을 알았습니다.
David C.

9

시도 setterm -blank $minutes하거나 비활성화하려면 0을 전달 하십시오 . -powersave옵션도 관련 될 수 있습니다. setterm다른 유용한 옵션들도 많이 있습니다.

시스템 시작시 이러한 속성을 설정하려면 초기화 스크립트 작성을 고려하십시오. 이것은 /etc/init.d디렉토리에 있는 스크립트 일뿐 입니다. 그것을 호출하자 setterm:

#!/bin/sh
[ "$1" == "start" ] || exit 0 # only initialize everything when called as /etc/init.d/setterm start
for term in /dev/tty[0-9]*; do # select all ttyNN, but skip ttyS*
    setterm -blank 0 >$term <$term
    setterm -powersave off >$term <$term
done

그런 다음 실행 가능하게 만드십시오.

# chmod +x /etc/init.d/setterm

마지막으로 /etc/rcX.d 심볼릭 링크 (데비안 방식)를 만드십시오 :

# update-rc.d setterm defaults

(당신이 그 행동의 피곤 얻을 것이다 경우 수행 # update-rc.d -f setterm remove. 참고 -f첫 번째 인수이어야합니다).


시간 즉석 테스트에 유용합니다. 테스트 Ubuntu 시스템에서 실제로 나타나는 -powerdown설정입니다. 부팅시 시스템 전체 기본값을 설정하는 것은 어떻습니까? setterm -blank X또는 /etc/rc.local (또는 ~ / .bashrc ) setterm -powerdown Y에서 실행 중 입니까?
quack quixote

1
예, 그러나 rc.local실제로 작동하는 경우에만 가능 합니다. (최근의 upstart마이그레이션은 분명히 존재하고 내 시스템에서 작동하여 일부 문제를 망쳤습니다.) 그렇지 않으면 initscript를 만들어야합니다. 우리의 경우 start첫 번째 인수로 전달 될 때 모든 것을 초기화 하고 다른 방법은 수행하지 않아야합니다 . 나는 그것을 나의 대답으로 설명 할 것이다.
whitequark

명령 setterm -blank X >/dev/ttyN이 작동하지 않는 것 같으므로 initscript 개념이 작동하지 않는다고 생각합니다. 부팅 시간 매개 변수 tho를 실행하고 더 많은 연구를 수행했습니다. 내가 잘못 것으로 보인다 -powerdown-powersave; 완전히 테스트되지 않았지만 시스템에서 작동하지 않습니다. setterm -blank X실제 VT에서만 작동하며 모든 VT에 영향을 미치므로 /etc/rc.local을 통해 한 번 실행하는 것이 합리적입니다. (Upstart는 rc.local을 빼앗지 않고 /etc/rcX.d 파일 만 가져 옵니다 .)
quack quixote

1
아헴. 에 setterm이스케이프 시퀀스 를 방출 stdout하지만 TTY 유형을 stdin다음과 setterm ... >/dev/ttyN </dev/ttyN같이 확인합니다. 방금 확인 했으며 의도 한대로 작동합니다.
whitequark

그것은 의미가 있고 (실제 TTY에서) 작동하지만 그 구문을 사용하는 요점은 무엇입니까? (1) 여전히 화면 내 (또는 잠재적으로 다른 PTY) 에서 작동하지 않습니다 . / dev / ttyN을 지정하면 유용합니다. (2) 하나의 VT를 설정하면 모두에 영향을 미치므로 initscript 루프가 필요하지 않습니다.
quack quixote

3

누구든지 데비안에 대한 다른 가능한 해결책을 찾고 있다면 (우분투가 아닐 수도 있음) :

에서 /etc/kbd/config"BLANK_TIME"이라는 설정을 찾으십시오.

# screen blanking timeout.  monitor remains on, but the screen is cleared to
# range: 0-60 min (0==never)  kernels I've looked at default to 10 minutes.
# (see linux/drivers/char/console.c)
BLANK_TIME=30

0으로 변경하면 비활성화됩니다.

BLANK_TIME=0

데비안 6과 7에서 테스트되었습니다.


2

upstart를 사용하는 최신 Ubuntu를 실행중인 경우 다음을 사용할 수 있습니다.

for file in /etc/init/tty*.conf; do tty="/dev/`basename $file .conf`"; echo "post-start exec setterm -blank 0 -powersave off >$tty <$tty" | sudo tee -a "$file"; done

여기서 무슨 일이 일어나고 있는지에 대한 약간의 설명 :

최신 Ubuntu 버전은 시스템 시작에 upstart를 사용합니다. upstart로 Linux 콘솔은 / etc / init에 저장된 구성 파일로 설정됩니다. 위의 명령은 각 구성 파일을 반복하여 시작합니다.

for file in /etc/init/tty*.conf;

$ file에있는 tty의 upstart 구성 파일 이름은 tty 장치의 이름을 빌드하는 데 사용됩니다.

tty="/dev/`basename $file .conf`";

tty가 시작된 후 화면 비우기 및 절전 기능을 비활성화하기 위해 "setterm"을 실행하는 upstart "post-start"명령이 작성되었습니다.

echo "post-start exec setterm -blank 0 -powersave off >$tty <$tty"

마지막으로 해당 명령이 upstart 구성 파일에 추가됩니다.

| sudo tee -a "$file";

2

내 시스템 (다양한 RedHat Enterprise Linux 릴리스)에서 다른 접근 방식이 필요하다는 것을 알았습니다.

RHEL 5 및 6 시스템의 경우 회선을 추가 할 수 있습니다

/bin/setterm -blank 0 -powerdown 0 -powersave off

/etc/rc.local. 시스템 시작시 콘솔 화면 비우기를 비활성화합니다.

RHEL 7 시스템에서는 작동하지 않는 것으로 나타났습니다. RHEL7에서 rc.local에서 setterm을 실행하면 오류가 발생합니다.

setterm: $TERM is not defined.

이 명령은 $ TERM이 정의 된 대화식 쉘에서 작동합니다 ( linux). setterm에서 강제로 사용하면 :

/bin/setterm -term linux -blank 0 -powerdown 0 -powersave off

그런 다음 다른 오류가 발생합니다.

setterm: cannot (un)set powersave mode: Inappropriate ioctl for device

동일한 명령이 대화식 세션에서 제대로 작동하더라도. consoleblank커널 매개 변수 설정이 작동했습니다.

RHEL7 에서 매개 변수 를 편집 /etc/default/grub하고 추가 consoleblank=0하십시오 GRUB_CMDLINE_LINUX. 그런 다음 실행 grub2-mkconfig -o /boot/grub2/grub.cfg하고 재부팅하십시오.

consoleblankRHEL5 또는 6에서 설정 을 시도하지 않았습니다 .


2
RHEL7은 systemd를 사용합니다. rc.local은 기본적으로 터미널에 연결되어 있지 않습니다. 나는 당신이 </dev/tty1 >/dev/tty1그것을 추가 하거나 뭔가 작동 시킬 수 있다고 생각합니다
sourcejedi

1

Linux 콘솔 개인 CSI 시퀀스

sleep mode/screensaver입력 시간 을 설정하려면 (여기서 X는 분 단위이며 0 = 사용 안함) :

(직렬 콘솔에서)

echo -e '\033[9;X]' > /dev/tty1    

또는 (프레임 버퍼 콘솔에서)

echo -e '\033[9;X]'    

또는 부팅 할 때마다 설정하려면 /etc/inittab다음을 사용하십시오 .

tty1::sysinit:echo -e '\033[9;X]'

심판 :


0

gnome-screensaver-command --exit.profile파일에 추가하면 데비안 리눅스 (Wheezy)에서이 문제가 해결되었습니다.

머리카락을 뽑는 다른 사람들이 스크린 블랭킹을 멈추도록 돕기 위해 이것을 추가 할 것이라고 생각했습니다.

"절전을위한 어두운 화면" 확인란 이 작동하지 않습니다. 체크하지 않아도 선택한 비활성 시간에 따라 화면이 여전히 비어 있습니다.

업데이트 : 실제로 sleep 30 && /usr/bin/gnome-screensaver-command --exit &제대로 작동해야했습니다. 그놈 화면 보호기는 .profile이 처리 된 후 오래 시작된 것 같습니다.


2
이것은 Gnome 스크린 세이버가 아닌 콘솔 스크린 블랭킹에 관한 것입니다.
basic6
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.