在文本控制台上禁用屏幕消隐

mar*_*s_b 81 linux suse terminal console

我正在运行 linux 集群,主要是在 SLES10 上。服务器主要是刀片,通过远程控制台访问。服务器机房中有一个真正的控制台,但已关闭。

我想禁用屏幕消隐,因为它没有任何作用,而且很麻烦。您必须按 键才能查看是否已连接,这很痛苦。我们在运行级别 3 下运行,因此控制台处于文本模式,不涉及 X11。

max*_*zig 91

您可以通过以下方式验证内核用于虚拟控制台消隐的超时时间:

$ cat /sys/module/kernel/parameters/consoleblank
600
Run Code Online (Sandbox Code Playgroud)

此文件是只读的,超时以秒为单位指定。当前的默认值似乎是 10 分钟。

您可以通过在虚拟控制台上输入以下命令来更改该值(如果您在 xterm 中,则必须通过点击例如Ctrl+ Alt+更改为虚拟控制台F1)。

$ setterm -blank VALUE
Run Code Online (Sandbox Code Playgroud)

其中新的 VALUE 以分钟为单位指定。值 0 禁用消隐:

$ cat /sys/module/kernel/parameters/consoleblank
600
$ setterm -blank 0
$ cat /sys/module/kernel/parameters/consoleblank
0
Run Code Online (Sandbox Code Playgroud)

setterm还有其他与省电相关的选项,最有用的组合似乎是:

$ setterm -blank 0 -powersave off
Run Code Online (Sandbox Code Playgroud)

因此,要在启动时永久/自动禁用虚拟控制台消隐,您可以:

  1. 添加consoleblank=0到内核​​参数(编辑 grub 配置)
  2. setterm -blank 0命令添加到一个rc-local或等效的启动脚本
  3. setterm输出添加到/etc/issue因为/etc/issue是每个虚拟控制台上的输出:

    # setterm -blank 0 >> /etc/issue

从上面选择一个选项。

  • 请注意,您实际上不必在虚拟控制台中运行 `setterm`。你也可以将它重定向到它:`setterm -blank 0 > /dev/tty1` 工作得很好。或者你可以使用 `setterm -blank < /dev/tty1` 来查询 tty1 的当前值或使用 `setterm -blank force < /dev/tty1` 来强制消隐。 (7认同)
  • **PS:** 在 Ubuntu 11.10 系统 (Thinkpad X200) 上,我注意到一个错误,其中内核的控制台消隐会干扰正在运行的 X11 会话。这意味着在最后一个按键按下 10 分钟后,X11 显示空白,您必须循环到虚拟控制台才能恢复 X11 屏幕(例如在视频播放期间非常烦人)。这与 X11 下的 DPMS/屏幕保护程序相关设置无关(想想 `xset` 等)。因此,如上所述禁用虚拟控制台消隐是受影响系统的快速解决方法。 (2认同)
  • 在 RHEL 5 和 6 上,我发现将 `/bin/setterm -blank 0 -powerdown 0 -powersave off` 放在 `/etc/rc.local` 中效果很好。然而,在 RHEL 7 上它会失败。将 `consoleblank=0` 添加到内核参数可以在该平台上运行。 (2认同)

Uku*_*kit 15

尝试使用这个:

setterm -blank
Run Code Online (Sandbox Code Playgroud)

  • @mattdm 为什么您不能只编写一个运行该命令的单元? (3认同)
  • @mattdm,不是真的 - `systemd` 通常带有一个 `rc-local` 兼容性服务 - 或者您可以轻松添加自定义服务...... (2认同)

Grz*_*cki 15

根据:https : //wiki.archlinux.org/index.php/Display_Power_Management_Signaling#DPMS_Interaction_in_a_console_with_setterm

防止屏幕关闭(在控制台中)

$ setterm -blank 0 -powerdown 0

或者,您可以使用以下命令永久禁用控制台消隐:

# echo -ne "\033[9;0]" >> /etc/issue

  • 第二种解决方案在 Marvell ARM Debian 上非常有用。所有其他解决方案什么都不做。 (3认同)

小智 15

唯一的永久解决方案是添加consoleblank=0到内核​​命令行。您可以在以下位置查看值(默认为 600 秒):

/sys/module/kernel/parameters/consoleblank
Run Code Online (Sandbox Code Playgroud)

(请注意,该文件是只读的)。更改 consoleblank 值的唯一方法是使用新的内核命令行选项重新启动。

  • 最后一句是错误的——你不需要重启来改变`consoleblank`的值。看我的回答。 (3认同)

mar*_*s_b 13

我已经实施并测试了以下配置,它在我目前的主力 sles10 上运行良好。

/etc/init.d/boot.local
Run Code Online (Sandbox Code Playgroud)

添加

setterm -blank
Run Code Online (Sandbox Code Playgroud)

看起来这就是全部。感谢 Uku Loskit 和 Gilles 朝着正确的方向努力。


Geo*_*lin 7

我真的被这个问题弄糊涂了。上面使用 setterm 和从/到 /dev/tty0 重定向的所有技巧在我的 ssh 中都不起作用。

然后我意识到了一种禁用它的方法:

TERM=linux setterm -blank 0 -powerdown 0  -powersave off >/dev/tty0 </dev/tty0
Run Code Online (Sandbox Code Playgroud)

TERM=linux 替换了默认的 TERM(在我的机器上是 xterm-256color),并帮助 setterm 从 tty0 查询正确的参数。

您可以通过以下方式检查结果

cat /sys/module/kernel/parameters/consoleblank
Run Code Online (Sandbox Code Playgroud)

它应该是 0。如果是 600,那么技巧还没有奏效。


小智 6

如果您只想防止用户登录后屏幕变黑,则只需要附加setterm -powersave off -blank 0$HOME/.bash_profile相应用户的。