0

我在 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 工作。

4

1 回答 1

0

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

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

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

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

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

如果你在 cron 中使用 bash shell,你可以说<>/dev/consoleopen for in 和 out。

于 2021-03-09T14:53:19.310 回答