cron을 사용하여 야간 모드를 만드는 방법

cron을 사용하여 야간 모드를 만드는 방법

저는 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 -eas를 사용하여 스스로 이 작업을 올바르게 수행했습니다. ( 보안을 보장 $HOME하려면 이것이 정확해야 합니다 xauth. 이것은 이것을 여러분의 crontab에 넣는 것의 일부입니다.)

또 다른 팁은 오류 메시지를 받을 수 있는 이메일 시스템을 설치하는 것입니다.

OP가 "cron 작업을 디스플레이에 연결할 수 없습니다"라고 보고하는 경우(이메일 시스템 설치 후) 이는 DISPLAY가 올바르지 않거나 디스플레이 보안에 문제가 있음을 의미할 수 있습니다( xauthxhost). 이렇게 하려면 명령 창에서 스크립트를 실행해 보는 것이 좋습니다. 다음과 같이 실행해 보세요 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모두 로컬에 설치했습니다.

관련 정보