매 10 분마다 소스에서 새 사진을 다운로드하기 위해 cronjob을 빌드하고 feh를 사용하여 배경 화면으로 설정합니다. 파일이 다운로드되었지만 배경 화면은 변경되지 않습니다. 문제는 어디에 있습니까? 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)
답변
불행히도 cron get에 의해 시작된 환경 프로세스가 매우 간단하고 가장 중요한 변수와 값만 포함 하고 있다고 충분히 강조되지 않았습니다 . 다음을 포함하는 쉘 스크립트를 실행하여 확인할 수 있습니다
#!/bin/bash
set > /tmp/myset.txt
X 기반 응용 프로그램을 실행하는 데 필요한 DISPLAY 변수가 설정되어 있지 않다는 것을 알 수 있습니다 (그리고 드문 예외를 제외하고는 우리가 사용하는 모든 것이 그 종류입니다).
당신은 같은 것을 넣어야합니다
export DISPLAY=:0.0
당신의 스크립트에 더 나은 확률을 가지고.
답변
지침으로 곰 바이의 답변을 완성하려면 :
를 실행 env | grep -i display
하고 값을 확인하십시오 DISPLAY
. 아마도 :0.0
또는 :0
입니다.
그에 따라 crontab을 수정하십시오.
*/10 * * * * DISPLAY=:0 /bin/sh /home/tim/Dokumente/Scripts/wallpaper.sh