【问题标题】:Automating setterm自动化设置项
【发布时间】:2021-03-08 21:44:29
【问题描述】:

我在 HP Pavilion dv6 上安装了没有 x11 的 GNU/linux Debian 10 (sid) net install。我可以通过以下方式保持显示器始终开启:

setterm -blank 0

然后在 10 分钟不活动后关闭显示器:

setterm -blank 10.

我想做的是让屏幕在每晚 23:00 关闭,并在每天早上 06:00 重新开启。我在 cron 和 systemctld 中尝试了几件事。

我尝试过的是:

setterm -blank 10
setterm -term bash -blank 10
setterm -term fish -blank 10
setterm -term /dev/tty1 -blank 10
setterm -term linux -blank 10
$TERM=linux setterm -blank 10
$TERM=bash setterm -blank 10
$TERM=fish setterm -blank 10
$TERM=/dev/tty1 setterm -blank 10

我还制作了包含所有这些变体的 bash 脚本。无济于事。甚至可以在 cron 中运行 setterm 或作为 systemctld 事件运行吗?

作为次要说明,我使用 fish 作为我的外壳,我还必须从 GNU/screen 分离才能真正让 setterm 工作。

【问题讨论】:

    标签: linux gnu-screen debian-buster screen-off


    【解决方案1】:

    对于某些选项,setterm 通过将一系列字符发送到标准输出来工作。通常,当您在控制台上时,这些会被控制台驱动程序读取并解释。其他选项类似地在标准输入上执行 ioctls。

    如果您从 cron 或 systemd 单元使用这些命令,则需要将输出或输入重定向到控制台。例如,从 cron 中,以 root 身份尝试

    setterm -term linux -blank 0 >/dev/console
    

    或者对于使用 ioctl 的东西,设置标准输入

    setterm -term linux -powersave on </dev/console
    

    如果你在 cron 中使用 bash shell,你可以说 &lt;&gt;/dev/console 来打开进出。

    【讨论】:

    • 太棒了!非常感谢。我通过 cron 使用了您的第一个解决方案。这也有助于 gnu/screen 中的 setterm。干杯
    猜你喜欢
    • 1970-01-01
    • 2022-08-12
    • 2021-03-18
    • 2013-12-15
    • 2011-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多