Linux仮想端末で画面の非表示の動作を変更するにはどうすればよいですか?
たとえば、XからVTに切り替えてログインし、システムを5分間ほど放置すると、スクリーンセーバーのように画面が空白になります。スクリーンセーバーのように、キーを押すと元に戻ります。
ほとんどの場合、タイムアウトを変更したいだけですが、他の設定にも興味があります。
問題がなければ、私のシステムの1つで、ストックグラフィックスドライバーを備えたUbuntu 10.04を実行しています。 fbset
は、radeondrmfb
フレームバッファーデバイスを使用してコンソールを表示します。
setterm
from @ whitequark's answer は合理的なユーザースペースツールですが、それだけではありません。
デフォルトのコンソールブランキング動作は、コンパイル時にカーネルに組み込まれます。起動時に設定できます パラメーター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.
オプション、私のUbuntuシステムでのデフォルト、影響範囲は次のとおりです。
setterm -blank [0-60]
;照会すると常に0を報告します。実際のVTで実行すると効果的です。すべての実際のTTYに影響します。 VTの画面セッションで実行する場合は無効です。setterm -powerdown [0-60]
;常に「3]」を報告します(??);効果がないようです。 Ubuntuカーネルは APM_DISPLAY_BLANK を有効にしません。これは関連している可能性があります。consoleblank=N
;デフォルトは600(10分)です。すべての実際のVTに影響します。 VTのスクリーンセッションに影響します。実行中に設定する方法はありません。したがって、デフォルトを変更するための私のオプションは次のいずれかです。
setterm -blank X
(Xは分、0は無効)を追加します。setterm -blank X
を追加します。consoleblank=Y
(Yは秒、0は無効)を追加します。 GRUB_CMDLINE_LINUX または GRUB_CMDLINE_LINUX_DEFAULT。 (update-grub
を忘れないでください。)setterm -blank $minutes
を試してください(または、無効にするには0を渡します); -powersave
オプションも関連している可能性があります。 setterm
には他にも便利なオプションがたくさんあります。
システムの起動時にこれらの属性を設定する場合は、initscriptの記述を検討してください。これは、/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シンボリックリンク(Debianの方法)を作成します。
# update-rc.d setterm defaults
(その動作に飽きたら、# update-rc.d -f setterm remove
を実行してください。-f
は最初の引数でなければならないことに注意してください)。
誰かがDebianの別の可能な解決策(おそらくUbuntuではない)を探している場合:
/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
Debian 6および7でテスト済み。
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";
私のシステム(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
_を実行して再起動します。
RHEL5またはRHEL 6でconsoleblank
を設定したことはありません。
時間を入力する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]'
refs:
gnome-screensaver-command --exit
を.profile
ファイルに追加すると、Debian Linux(Wheezy)でこの問題が解決しました。
私はこれを追加して、画面を消すのをやめようと髪を引っ張っている他の人を助けると思いました。
「電力を節約するために画面を暗くする」というタイトルのチェックボックスが誤動作しています。チェックを外しても、選択した非アクティブ時間に応じて画面は空白のままです。
更新:実際に機能させるには、実際にsleep 30 && /usr/bin/gnome-screensaver-command --exit &
が必要でした。 GNOMEスクリーンセーバーは、.profileが処理されてからかなり後に起動するようです。