Linux-Mint

如何使用 cron 創建夜間模式

  • November 7, 2020

我在夜間使用 Iris Mini 過濾藍光,效果很好,但必須手動執行它很煩人。所以我試圖在每晚 8 點使用 cron 啟動它。

這就是我寫的執行 crontab -e。如果我在終端中執行該命令,則該命令有效

crontab

0 20 * * * sh /home/jogarcia/Software/open-iris-mini.sh

open-iris-mini.sh

#!/bin/bash

export DISPLAY=0:.
/home/jogarcia/Software/iris-mini

我還執行xhost +localhost 了測試(在 cron 選項卡之前)。

在日誌中搜尋grep CRON /var/log/syslog我發現這行似乎表明實際上已執行:

定時日誌

Nov  2 20:00:01 my-computer-is-name CRON[8391]: (user) CMD (sh /home/jogarcia/Software/open-iris-mini.sh)

但它不起作用,因為我在螢幕上看不到結果(它應該顯示一種橙色)真的迷路了,我不知道做錯了什麼。

要查看錯誤,我安裝了郵件服務。

本地郵件錯誤

QXcbConnection: Could not connect to display 0:.

秘訣(正如@waltinator所指出的,就是正確設置DISPLAY。

那應該是DISPLAY=:0

格式通常為 hostname:displaynumber,其中 hostname 是可選的。

第二個問題是顯示安全性。如果您將 cronjob 放在您自己的 crontab 中而不是 root 的,那麼xhost就不需要了xauth。OP已經(可能)通過使用crontab -e自己正確地做到了這一點。(請注意,安全性$HOME必須正確xauth才能正常工作。這是將其放入您自己的 crontab 所做的一部分。)

這裡的另一個技巧是安裝一個電子郵件系統來獲取錯誤消息。

當 OP 報告(在安裝電子郵件系統後)“cron 作業無法連接到顯示器”時,可能意味著 DISPLAY 不正確或顯示安全性出現問題(xauthxhost)。為此,我建議嘗試在命令視窗中執行腳本。嘗試執行它env -uDISPLAY /home/jose/Software/open-iris-mini.sh(如果它說該文件不可執行,請使用chmod +x

(根據 OP 的要求添加答案。)

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