Alterar o comportamento de supressão da tela do console do Linux

34

Como eu mudo o comportamento de apagamento de tela em terminais virtuais Linux?

Por exemplo, se eu alternar para um VT de X, fizer login e deixar o sistema sozinho por 5 minutos, a tela ficará em branco como um protetor de tela. Ele volta com qualquer tecla pressionada, como um protetor de tela.

Principalmente, quero apenas alterar o tempo limite, mas também estou interessado em outras configurações.

Se isso ajudar, um dos meus sistemas está executando o Ubuntu 10.04 com os drivers de gráficos de ações. fbset mostra o console usando o dispositivo radeondrmfb framebuffer.

    
por quack quixote 14.06.2010 / 18:34

7 respostas

36

setterm de @ whitequark's answer é uma resposta ferramenta de espaço de usuário razoável, mas não é toda a história.

O comportamento de supressão do console padrão é ativado no kernel em tempo de compilação. É configurável no momento da inicialização com o parâmetro consoleblank = ou no espaço do usuário com setterm . Da documentação do kernel ( 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.

Aqui estão as opções, seus padrões no meu sistema Ubuntu e suas esferas de influência:

  • %código%; sempre relata 0 quando consultado; eficaz quando executado em um VT real; afeta todos os TTYs reais; não é eficaz quando executado em sessões de tela em um VT.
  • %código%; sempre relata "3]" (??); não parece ter nenhum efeito. Os kernels do Ubuntu não ativam o APM_DISPLAY_BLANK , e isso pode estar relacionado.
  • %código%; o padrão é 600 (10 minutos); afeta todos os VTs reais; afeta as sessões de tela em um VT; nenhuma maneira de definir durante a execução.

Portanto, minhas opções para alterar o padrão são as seguintes:

  1. Adicione setterm -blank [0-60] (X em minutos, 0 para desativar) a um arquivo de inicialização do shell como .bashrc .
  2. Adicione setterm -powerdown [0-60] a /etc/rc.local .
  3. Adicione consoleblank=N (Y em segundos, 0 para desativar) à linha de comando do kernel adicionando-o às listas de parâmetros em / etc / default / grub , ou GRUB_CMDLINE_LINUX ou GRUB_CMDLINE_LINUX_DEFAULT . (Não esqueça de setterm -blank X .)
por 19.06.2010 / 08:48
9

Experimente setterm -blank $minutes (ou passe 0 para desabilitar); A opção -powersave também pode estar relacionada. setterm tem muitas outras opções úteis também.

Se você quiser definir esses atributos na inicialização do sistema, considere escrever um script de inicialização. Este é apenas um script colocado no diretório /etc/init.d . Que seja chamado 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

Em seguida, torne-o executável:

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

E finalmente, crie os links simbólicos /etc/rcX.d (o caminho do Debian):

# update-rc.d setterm defaults

(Se você se cansar desse comportamento, faça # update-rc.d -f setterm remove . Observe que -f deve ser o primeiro argumento).

    
por 14.06.2010 / 18:39
2

Se você estiver executando um novo Ubuntu que usa upstart, você pode usar:

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

Uma pequena explicação do que está acontecendo aqui:

Novas versões do Ubuntu usam upstart para inicialização do sistema. Com o upstart, os consoles do Linux são configurados com arquivos de configuração armazenados em / etc / init. O comando acima começa fazendo uma iteração sobre cada um desses arquivos de configuração:

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

O nome do arquivo de configuração upstart do tty em $ file é usado para construir o nome do dispositivo tty:

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

Um comando "post-start" do upstart é construído e executa o "setterm" para desabilitar a supressão de tela e economia de energia após o tty ter sido iniciado:

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

E finalmente esse comando é anexado ao arquivo de configuração do upstart:

| sudo tee -a "$file";
    
por 17.09.2012 / 00:38
1

Se alguém está procurando outra solução possível para o Debian (possivelmente não o Ubuntu):

Em /etc/kbd/config , procure uma configuração chamada "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

Altere para 0, isso irá desativá-lo:

BLANK_TIME=0

Testado no Debian 6 e 7.

    
por 03.07.2015 / 10:31
0

Em meus sistemas (várias versões do RedHat Enterprise Linux), descobri que diferentes abordagens são necessárias.

Para os meus sistemas RHEL 5 e 6, posso adicionar a linha

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

para /etc/rc.local . Isso desativa a supressão da tela do console na inicialização do sistema.

Descobri que isso não funciona nos sistemas RHEL 7. No RHEL7, a execução de setterm de rc.local faz com que um erro seja gerado:

setterm: $TERM is not defined.

O comando funciona a partir de um shell interativo, onde $ TERM é definido (como linux ). Se eu forçar setterm para usá-lo:

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

Então eu recebo um erro diferente:

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

Mesmo que o mesmo comando funcione bem em uma sessão interativa. Configurando o parâmetro consoleblank kernel trabalhado.

No RHEL7, edite /etc/default/grub e anexe consoleblank=0 ao parâmetro GRUB_CMDLINE_LINUX . Em seguida, execute grub2-mkconfig -o /boot/grub2/grub.cfg e reinicialize.

Eu não tentei definir consoleblank no RHEL5 ou 6.

    
por 24.11.2015 / 18:22
0

Seqüências CSI privadas do console Linux

Para definir o tempo de digitação de sleep mode/screensaver (onde X é um tempo em minutos; 0 = nunca):

(do console serial)

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

ou (a partir do console framebuffer)

echo -e '3[9;X]'    

ou para configurá-lo em cada inicialização, use /etc/inittab :

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

refs:

  • link
  • man console_codes
por 12.09.2018 / 04:57
0

Adicionar gnome-screensaver-command --exit ao meu arquivo .profile corrigiu esse problema para mim no Debian Linux (Wheezy).

Pensei em adicionar isso para ajudar outras pessoas que estão arrancando os cabelos tentando parar o apagamento da tela.

Uma caixa de seleção intitulada "Tela ofuscada para economizar energia" está com defeito. Mesmo desmarcado, ele ainda deixará a tela em branco de acordo com o tempo de inatividade selecionado.

ATUALIZAÇÃO: Eu realmente precisava de sleep 30 && /usr/bin/gnome-screensaver-command --exit & para funcionar corretamente. O protetor de tela do GNOME parece iniciar muito depois que o .profile foi processado.

    
por 23.08.2014 / 01:31