저는 Iris Mini를 사용하여 밤에 블루라이트를 필터링하는데 아주 잘 작동하지만 수동으로 해야 한다는 것이 귀찮습니다. 그래서 cron을 사용하여 매일 밤 8시에 시작하려고 했습니다.
crontab -e를 실행하기 위해 작성한 내용입니다. 이 명령은 터미널에서 실행하면 작동합니다.
예약 된 일들
0 20 * * * sh /home/jogarcia/Software/open-iris-mini.sh
iris-mini.sh 열기
#!/bin/bash
export DISPLAY=0:.
/home/jogarcia/Software/iris-mini
xhost +localhost
또한 (크론 탭 이전에) 테스트를 실행했습니다 .
로그를 검색해 보니 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:.
답변1
비밀(@에서 지적한 대로)월트너DISPLAY를 올바르게 설정하면 됩니다.
아마도 그럴 것입니다.DISPLAY=:0
형식은 일반적으로 호스트 이름:디스플레이 번호이며, 여기서 호스트 이름은 선택 사항입니다.
두 번째 문제는 디스플레이 보안입니다. 루트의 crontab 대신 자신의 crontab에 cronjob을 배치하는 경우에는 xhost
필요하지 않습니다 xauth
. OP는 (아마도) crontab -e
as를 사용하여 스스로 이 작업을 올바르게 수행했습니다. ( 보안을 보장 $HOME
하려면 이것이 정확해야 합니다 xauth
. 이것은 이것을 여러분의 crontab에 넣는 것의 일부입니다.)
또 다른 팁은 오류 메시지를 받을 수 있는 이메일 시스템을 설치하는 것입니다.
OP가 "cron 작업을 디스플레이에 연결할 수 없습니다"라고 보고하는 경우(이메일 시스템 설치 후) 이는 DISPLAY가 올바르지 않거나 디스플레이 보안에 문제가 있음을 의미할 수 있습니다( xauth
및 xhost
). 이렇게 하려면 명령 창에서 스크립트를 실행해 보는 것이 좋습니다. 다음과 같이 실행해 보세요 env -uDISPLAY /home/jose/Software/open-iris-mini.sh
(파일을 실행할 수 없다고 표시되면 를 사용하세요 chmod +x
).
(OP의 요청에 따라 답변이 추가되었습니다.)
답변2
cron
작업이 GUI 컨텍스트(색상 제어가 "합리적"인 경우)가 아닌 자체 컨텍스트에서 실행되기 때문에 실패합니다 .
작동시키려면 두 단계가 있습니다.
스크립트에서 환경 변수 DISPLAY
(X 서버에 대한 포인터로 사용됨)의 정의를 추가합니다. 그것은 마치
export DISPLAY=0:.
그러나 echo "$DISPLAY"
GUI 컨텍스트를 확인하십시오.
GUI 시작 시(아마도 $HOME/.config/autostart
)
xhost +localhost
호스트 localhost
(또는 사용자 ID localhost
- X Windows 보안이 이상함)로부터의 연결을 수락하도록 X 서버에 지시합니다. GUI에 로그인할 때마다 이 작업을 수행해야 합니다.
읽다 man xhost X
.
답변3
이것은 나보다 먼저 답변한 사람의 답변을 사용하여 나에게 정확히 효과가 있었습니다.
crontab -e
크론 작업 의 경우
[email protected]
0 20 * * * sh /home/jogarcia/Software/open-iris-mini.sh
그런 다음 sh 파일에서 다음을 수행합니다.
#!/bin/bash
DISPLAY=:0 /home/jogarcia/Software/iris-mini
예상대로 작동하는지 확인하기 위해 다음 명령을 사용했습니다.
env -uDISPLAY /home/jogarcia/Software/open-iris-mini.sh
cron 로그를 보기 위해 postfix 를 sudo apt-get install postfix
모두 로컬에 설치했습니다.