Debian

sct(setcolortemperature)與cron的段錯誤

  • October 16, 2018

Debian 伸展使用者在這裡。我希望每十分鐘螢幕閃爍一次。在嘗試了幾個替代方案(包括xrefresh)後,我決定使用sct. 它在 shell 中工作,但不適用於cron.

這有效:

sct 2000

**腳本:(**命名colrefr

#!/bin/bash
PATH=/usr/bin
sct 2000; sleep 3; sct

**Cron:(**顯示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,它們都有效。

它在外殼中執行順利。

這是兩件事的結合:

  1. 你還沒有告訴程序你的 X 伺服器在哪裡。
  2. M. Unangst 的程序根本不進行錯誤檢查和處理。

該程序需要繼承一個DISPLAY在您的 crontab 或包裝腳本中指定的環境變數,以告訴它您要調整的 X 伺服器顯示在哪裡。如果沒有被告知,您看到的分段錯誤就是它的故障模式。

您可能希望將此報告為錯誤。

您在使用的 shell 環境中碰巧有一個DISPLAY變數,可能是因為您使用的是 GUI 終端仿真器。如果您在非 GUI 環境中登錄,例如核心/使用者虛擬終端、真實終端或沒有 X11 轉發的 SSH 會話,當您以互動方式呼叫程序時也會看到相同的行為。

% 顯示= sct
zsh: 分段錯誤 DISPLAY= sct
%

進一步閱讀

引用自:https://unix.stackexchange.com/questions/475772