Linux-Mint
如何使用 cron 創建夜間模式
我在夜間使用 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 不正確或顯示安全性出現問題(
xauth
和xhost
)。為此,我建議嘗試在命令視窗中執行腳本。嘗試執行它env -uDISPLAY /home/jose/Software/open-iris-mini.sh
(如果它說該文件不可執行,請使用chmod +x
)(根據 OP 的要求添加答案。)