xprintidle 在 cronjob 中不起作用。为什么?

Mic*_*hał 7 cron idle

我安装了 lxle (Lubuntu) 12.04,我花了很多时间寻找可行的解决方案,使 PC 在闲置一段时间后关闭。

在检查了许多没有工作的程序后,我决定花很多时间来使用cronjob运行的 shell 脚本解决方案

我在这里遇到了两个问题。

  1. xprintidle在由 cronjob 运行时不会给出任何结果(空字符串)——无论是在那些环境中的 crontab 文件还是 shell 文件中,它都只给出空字符串而不是空闲的毫秒数。

  2. 其次,对于我来说,从 crontab 运行我的脚本以作为 root 运行我的关闭命令似乎并不简单。

你能给我一个解释那个话题的链接吗?我只知道 sudo 作为用户,但脚本不应该要求输入密码而只是关闭系统。

小智 5

您需要在调用之前设置 DISPLAY 环境变量,您可以在虚拟控制台 (Ctrl-Alt-F1) 中尝试此操作,因为它们没有设置 DISPLAY 变量,它们的行为与 cron 脚本的行为完全相同。

DISPLAY=:0 xprintidle
Run Code Online (Sandbox Code Playgroud)

或者

export DISPLAY=:0
xprintidle
Run Code Online (Sandbox Code Playgroud)

要么应该工作。

  • 请记住,如果您将另一台显示器(更大/更好的显示器)作为第一台显示器(然后在您随身携带笔记本电脑时拔掉电源插头),这种情况会发生变化。我花了几个小时调试为什么我的脚本今天停止工作...... (2认同)