我正在尝试让 X 屏幕保护程序 gltext 监控我的系统温度和其他一些统计数据。编写一个定期汇总统计数据的脚本没有问题,但我遇到的主要问题是 gltext 不会刷新 - 无论我输入什么文本,它都会停留在那里。
例如,我运行这个命令:
$ /usr/lib/xscreensaver/gltext -text "`cat /proc/acpi/thermal_zone/THRM/temperature`"
并得到一个显示以下内容的 gltext 窗口:
temperature: 60 C
我可以根据需要对其进行操作和格式化,但是随着我的 CPU 升温并冷却,它不会更新,即使我包含了时间变量。
我有一个脚本,将时间作为第一行,将温度作为第二行提供给 gltext - 尽管时间会随着时间的变化而不断更新,但温度值与屏幕保护程序启动时的温度值保持不变。
我是否可以实现我的愿望,即当温度变化时每 60 秒更改一次文本?
答案1
我明白了。gltext 有一个-program
标志,允许您将任何脚本输入其中,并且每 5 秒更新一次。strftime
转义代码不会被正常处理,因此任何由该-program
标志运行的脚本都需要有一种方法来输出时间。
答案2
阅读 gltext 上的文档,它说:
显示几行以实心 3D 字体旋转的文本。文本可以使用 strftime() 转义码来显示当前日期和时间
这让我相信发送到 gltext 的文本被提供给函数 strftime,因此时间变量(转义码)将被动态更新。没有证据表明任意信息或程序执行存在类似的功能,因此我不得不说,你想做的事情是不可能的。
在您的特定情况下,当您运行时gltext -text "`cat /proc/acpi/thermal_zone/THRM/temperature`"
,您的命令将运行一次,并且结果输出将转换为在启动时发送到 gltext 的参数,而 gltext 对曾经生成它的命令一无所知。