Linux konsol ekranı boşluk davranışını değiştirin


38

Linux sanal terminallerinde ekran karartma davranışını nasıl değiştiririm?

Örneğin, X'ten bir VT'ye geçersem, oturum açar ve sistemi 5 dakika kadar yalnız bırakırsam, ekran bir ekran koruyucu gibi boş kalır. Ekran koruyucu gibi herhangi bir tuşa basıldığında geri gelir.

Çoğunlukla yalnızca zaman aşımını değiştirmek istiyorum, ancak diğer ayarlarla da ilgileniyorum.

Yardımcı olursa, sistemlerimden biri stok grafik sürücüleri ile Ubuntu 10.04 kullanıyor. framebuffer cihazını fbsetkullanarak konsolu gösterir radeondrmfb.


2
Umarım bu size yardımcı olur, aynı soruyu karşılaştığımda bunu buldum askubuntu.com/questions/138918/…

Yanıtlar:


42

settermdan @ cevabı whitequark makul userspace araç, ama bu bütün hikaye değil.

Varsayılan konsol karartma davranışı, derleme zamanında çekirdeğe dönüştürülür. Bootmater consoleblank = ile önyükleme sırasında veya kullanıcı alanında yapılandırılabilir setterm. Çekirdek dokümantasyonundan ( 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.

Seçenekler, Ubuntu sistemimdeki varsayılanları ve etki alanları:

  • setterm -blank [0-60]; sorgulandığında daima 0 bildirir; gerçek bir VT üzerinde çalışırken etkili; tüm gerçek TTY'leri etkiler; VT'deki ekran oturumlarında çalıştırıldığında etkili değildir.
  • setterm -powerdown [0-60]; her zaman "3]" (??) bildirir; herhangi bir etkisi görünmüyor. Ubuntu çekirdekleri APM_DISPLAY_BLANK özelliğini etkinleştirmez ve bu ilişkili olabilir.
  • consoleblank=N; varsayılan olarak 600 (10 dakika); tüm gerçek VT'leri etkiler; VT'deki ekran oturumlarını etkiler; çalışırken ayar yapmanın yolu yok.

Yani varsayılanı değiştirme seçeneklerim aşağıdakilerden biri:

  1. Ekle setterm -blank Xgibi bir kabuk init dosyası (devre dışı için, birkaç dakika içinde 0 X) .bashrc .
  2. Ekle setterm -blank Xiçin /etc/rc.local .
  3. Ekle consoleblank=Yparametre listelerine ekleyerek çekirdek komut için (devre dışı bırakmak için saniyede 0 Y) / etc / default / grub ya GRUB_CMDLINE_LINUX veya GRUB_CMDLINE_LINUX_DEFAULT . (Unutma update-grub.)

4
Bunun setterm -blank Xbenim için tmux içinden çalışmadığını, ancak komutu çalıştırmadan önce tmux'dan çıktığımda mükemmel çalıştığını not etmek isterim .
Cody Hess

1
Grub2'yi bootloader olarak kullanıyorsanız, bu çekirdek parametresini / etc / default / grub içine ekleyebilir GRUB_CMDLINE_LINUX_DEFAULT="consoleblank=0"ve ardından grub config ile güncelleyebilirsiniz grub[2]-mkconfig -o /boot/grub/grub.cfg.
user3132194

3]Çünkü setterm -powerdownsadece yarısı doğru: setterm -powerdown 3 | hexdump -cdöner 033 [ 1 4 ; 3 ]. Bu kaçış sırasını neyin yorumlaması gerektiğinden emin değil ...
Daniel Alder

1
Dağıtımınıza ve değişikliğin yürürlüğe girmesini istediğiniz yere bağlı olarak, bu seçeneklerden bazıları çalışmayabilir. Rc.local'daki settermin RHEL 5 ve 6 için harika çalıştığını gördüm, ancak 7 değil.
David C.

9

Deneyin setterm -blank $minutes(veya devre dışı bırakmak için 0'ı girin); -powersaveseçenek ayrıca ilgili olabilir. settermbir sürü başka yararlı seçenek de var.

Bu özellikleri sistem başlangıcında ayarlamak istiyorsanız, bir initscript yazmayı düşünün. Bu sadece /etc/init.ddizine yerleştirilmiş bir betiktir . Çağrılsın 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

Sonra çalıştırılabilir hale getirin:

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

Ve son olarak, / etc / rcX.d sembolik linklerini (Debian yolu) oluşturun:

# update-rc.d setterm defaults

(Bu davranıştan bıkacaksanız, yapın # update-rc.d -f setterm remove. -fİlk argüman olması gerektiğini unutmayın ).


hrm. Anında kullanışlı görünüyor, benim testimde göründüğü gibi görünüyor Ubuntu sistemi aslında etkin olan -powerdownayar. önyükleme, sistem genelinde varsayılan ayarlama hakkında ne? çalışıyorsa setterm -blank Xveya setterm -powerdown Yiçinde /etc/rc.local (veya ~ / .bashrc ) makul?
quack quixote

1
Evet, ama sadece eğer rc.localgerçekten çalışıyor. (Son zamanlarda upstartyaşanan göç bazı şeyleri berbat etti, görünüşte sistemimde var ve çalışıyor.) Aksi halde bir intscript oluşturmalısınız. Bu kolay: Bizim durumumuzda, startilk argüman olarak geçtiğinde herşeyi başlatmalı ve başka bir şey yapmamalı. Bunu cevabımda tarif edeceğim.
whitequark

komut setterm -blank X >/dev/ttyNçalışmıyor gibi görünüyor, bu nedenle initscript kavramının işe yarayacağını sanmıyorum. bir boottime parametresi tho ile karşılaştı ve biraz daha araştırma yaptım. -powerdownve hakkında yanlış gibi görünüyorum -powersave; tam olarak test etmedim ancak bunlar sistemim üzerinde çalışmıyor. setterm -blank Xsadece gerçek bir VT'den çalışır ve tüm VT'leri etkiler, bu nedenle bir kere /etc/rc.local aracılığıyla çalıştırmak makul olur. (Sonradan görme uzağa almaz Rc.local , sadece /etc/rcX.d şeyler.)
vak quixote

1
Ahem. settermKaçış dizileri yayan görünüyor stdoutancak TTY türünü şu şekilde stdinkontrol ediyor: Sadece kontrol ettim ve setterm ... >/dev/ttyN </dev/ttyNçalıştığım şekilde çalışıyor.
whitequark

bu mantıklı ve işe yarıyor (gerçek bir TTY'den), ancak bu sözdizimini kullanmanın amacı nedir? (1) hala bir / dev / ttyN belirtilmesinin yararlı olacağı ekran (veya potansiyel olarak diğer PTY'ler) içinden çalışmaz; (2) bir VT ayarlanması hepsini etkiler, bu nedenle initscript döngüsüne gerek yoktur.
quack quixote

3

Herhangi biri Debian için başka bir olası çözüm arıyorsa (muhtemelen Ubuntu değil):

İçinde /etc/kbd/config"BLANK_TIME" adında bir ayar arayın:

# 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 olarak değiştirin, bu devre dışı bırakacaktır:

BLANK_TIME=0

Debian 6 ve 7'de test edilmiştir.


2

Başlangıcı kullanan daha yeni bir Ubuntu kullanıyorsanız, şunları kullanabilirsiniz:

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

Burada neler olduğunun bir açıklaması:

Daha yeni Ubuntu sürümleri, sistemin başlatılması için başlangıç ​​özelliğini kullanır. Başlangıçta, Linux konsolları / etc / init içinde saklanan config dosyalarıyla kurulur. Yukarıdaki komut, bu yapılandırma dosyalarının her birini yineleyerek başlar:

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

Tty'nin $ start dosyasındaki start file dosya adı, tty aygıtının adını oluşturmak için kullanılır:

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

Ekran başlatmayı ve tty başlatıldıktan sonra güç tasarrufunu devre dışı bırakmak için "setterm" i çalıştıran bir starttart "post-start" komutu oluşturulmuştur:

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

Ve nihayet bu komut upstart config dosyasına eklenir:

| sudo tee -a "$file";

2

Sistemlerimde (çeşitli RedHat Enterprise Linux sürümleri), farklı yaklaşımların gerekli olduğunu buldum.

RHEL 5 ve 6 sistemlerim için çizgiyi ekleyebiliyorum

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

için /etc/rc.local. Bu, sistem başlangıcında konsol ekranı körlemeyi devre dışı bırakır.

Bunun RHEL 7 sistemlerinde çalışmadığını öğrendim. RHEL7'de setterm komutunu rc.local'dan çalıştırmak hataya neden olur:

setterm: $TERM is not defined.

Komut, $ TERM'in tanımlandığı (as linux) etkileşimli bir kabuktan çalışır . Settermi kullanmaya zorlarsam:

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

Sonra farklı bir hata alıyorum:

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

Aynı komut etkileşimli bir oturumda iyi çalışıyor olsa da. consoleblankÇekirdek parametresini ayarlamak çalıştı.

RHEL7, düzenleme üzerinde /etc/default/grubve ekleme yapılması consoleblank=0için GRUB_CMDLINE_LINUXparametre. Sonra koş grub2-mkconfig -o /boot/grub2/grub.cfgve yeniden başlat.

consoleblankRHEL5 veya 6 ayarını henüz denemedim .


2
RHEL7 sistemd kullanır; rc.local varsayılan olarak bir terminale bağlı değildir. Eklemek </dev/tty1 >/dev/tty1ya da çalışması için bir şey ekleyebilirim
kaynakjedi

1

Linux Konsolu Özel CSI Dizileri

sleep mode/screensaverGiriş zamanını ayarlamak için (burada X dakika cinsinden bir zamandır; 0 = asla):

(seri konsoldan)

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

veya (framebuffer konsolundan)

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

veya her önyüklemede ayarlamak için, şunu kullanın /etc/inittab:

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

ref:


0

Ekleme gnome-screensaver-command --exitbenim için .profiledosyanın Debian Linux (Wheezy) benim için bu sorunu düzeltildi.

Bunu, ekran kararmasını durdurmaya çalışırken saçlarını çeken diğerlerine yardımcı olmak için ekleyeceğimi düşündüm.

"Güç tasarrufu için kısma ekranı" başlıklı bir onay kutusu hatalı çalışıyor. İşaretli olmasa bile, seçilen hareketsizlik süresine göre ekranı DURDURURUR.

GÜNCELLEME: Aslında sleep 30 && /usr/bin/gnome-screensaver-command --exit &düzgün çalışması için gerekli . GNOME ekran koruyucu, .profile işlendikten çok sonra başlıyor gibi görünüyor.


2
Bu, Gnome ekran koruyucular değil, konsol ekran karartması ile ilgilidir.
basic6
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.