cronjob이 feh 명령을 실행하지 않는 이유

cronjob이 feh 명령을 실행하지 않는 이유

저는 10분마다 소스에서 새 사진을 다운로드하고 feh를 사용하여 배경화면으로 설정하는 cronjob을 구축합니다. 파일이 다운로드되지만 배경화면은 변경되지 않습니다. 문제는 어디에 있습니까? crontab -e사용자로 명령을 실행하므로 내가 라인을 실행하는 것과 같아야 합니다. 이는 btw에서 작동합니다.

여기 스크립트가 있습니다

#!/bin/sh

#Filename
file="space-"$(date +%x_%H:%M:%S)

#save it 
wget http://rammb.cira.colostate.edu/ramsdis/online/images/latest_hi_res/himawari-8/full_disk_ahi_true_color.jpg -O /home/tim/Bilder/Wallpaper/$file -o /dev/null

#set background
feh --bg-max /home/tim/Bilder/Wallpaper/$file

crontab -e다음은 배경을 변경해야 하는 사용자(일명 나)를 위한 것입니다 .

*/10 * * * * /bin/sh /home/tim/Dokumente/Scripts/wallpaper.sh

내 syslog에서 다음 줄을 찾았습니다.

Jan 31 21:40:01 LinuxMint CRON[18209]: (tim) CMD (/bin/sh /home/tim/Dokumente/Scripts/wallpaper.sh)
Jan 31 21:40:11 LinuxMint CRON[18204]: (CRON) info (No MTA installed, discarding output) 

답변1

불행하게도 cron get에 의해 시작된 환경 프로세스가 다음과 같다는 점은 충분히 강조되지 않았습니다.매우간단하며 가장 중요한 변수와 값만 포함됩니다. 다음을 포함하는 쉘 스크립트를 실행하여 확인할 수 있습니다.

#!/bin/bash

set > /tmp/myset.txt

X 기반 응용 프로그램을 실행하는 데 필요한 DISPLAY 변수 세트가 없음을 알 수 있습니다(드문 예외를 제외하고 우리가 사용하는 것은 모두 그런 종류입니다).

다음과 같은 것을 넣어야합니다.

export DISPLAY=:0.0

귀하의 스크립트에 더 나은 확률을 갖도록하십시오.

답변2

지침과 함께 Gombai의 답변을 완성하려면 다음을 수행하십시오.

실행 env | grep -i display하여 값을 확인합니다 DISPLAY. 아마도 :0.0, 또는 입니다 :0.

그에 따라 crontab을 수정하십시오.

*/10 * * * * DISPLAY=:0 /bin/sh /home/tim/Dokumente/Scripts/wallpaper.sh

관련 정보