Debian 延伸用户在这里。我想要每十分钟屏幕闪烁一次。在尝试了几种替代方案(包括xrefresh
)之后,我决定使用sct
.它可以在 shell 中工作,但不能与cron
.
这有效:
sct 2000
剧本:(命名colrefr
)
#!/bin/bash
PATH=/usr/bin
sct 2000; sleep 3; sct
克朗:(pgrep cron
显示cron
正在运行)
* * * * * /home/user/folder/colrefr
(每分钟一次,直到调试成功)
我已经缓解了常见的问题 - 最后一个命令后的换行符、PATH
脚本中的设置、文件名中没有点等等。
$ which sct
/usr/bin/sct
$ which sleep
/bin/sleep/
-
$ sudo tail -f /var/log/syslog
Oct 16 16:00:01 user CRON[29060]: (user) CMD (/home/user/folder/colrefr )
Oct 16 16:00:01 user kernel: [229206.201351] sct[29062]: segfault at e0 ip 000055dca79aa8cd sp 00007ffd9dfc6220 error 4 in sct[55dca79aa000+2000]
Oct 16 16:00:01 user kernel: [229206.201366] Code: 17 20 00 66 90 ff 25 4a 17 20 00 66 90 41 57 41 56 41 55 41 54 55 53 89 fb 31 ff 48 89 f5 48 83 ec 38 e8 ae ff ff ff 49 89 c4 <48> 63 80 e0 00 00 00 4c 89 e7 48 c1 e0 07 49 03 84 24 e8 00 00 00
Oct 16 16:00:01 user kernel: [229206.209280] sct[29064]: segfault at e0 ip 000055dcdd3268cd sp 00007ffdf60c9e40 error 4 in sct[55dcdd326000+2000]
Oct 16 16:00:01 user kernel: [229206.209295] Code: 17 20 00 66 90 ff 25 4a 17 20 00 66 90 41 57 41 56 41 55 41 54 55 53 89 fb 31 ff 48 89 f5 48 83 ec 38 e8 ae ff ff ff 49 89 c4 <48> 63 80 e0 00 00 00 4c 89 e7 48 c1 e0 07 49 03 84 24 e8 00 00 00
我还有另外三个cronjobs
,它们都可以工作。
它在 shell 中运行顺利。
答案1
这是两件事的结合:
- 您还没有告诉程序您的 X 服务器在哪里。
- M. Unangst 的程序根本不进行错误检查和处理。
该程序需要继承一个DISPLAY
在 crontab 或包装脚本中指定的环境变量,以告诉它您要调整的 X 服务器显示在哪里。如果没有告知的话,您看到的分段错误就是其故障模式。
您可能想将此报告为错误。
DISPLAY
您所使用的 shell 环境中碰巧有一个变量,可能是因为您使用的是 GUI 终端仿真器。如果您在非 GUI 环境中登录,例如内核/用户虚拟终端、真实终端或没有 X11 转发的 SSH 会话,那么当您以交互方式调用该程序时,您也会看到相同的行为。
%显示= sct zsh:分段错误 DISPLAY= sct %
进一步阅读
- https://sources.debian.org/src/setcolorTemperature/1.3-1/sct.c/#L50
- https://unix.stackexchange.com/a/355177/5132
- https://unix.stackexchange.com/a/19238/5132
- https://unix.stackexchange.com/a/154453/5132
- https://unix.stackexchange.com/a/215151/5132
- https://bugs.debian.org/cgi-bin/pkgreport.cgi?archive=both;src=setcolorTemperature