![cronjob이 feh 명령을 실행하지 않는 이유](https://rvso.com/image/1482469/cronjob%EC%9D%B4%20feh%20%EB%AA%85%EB%A0%B9%EC%9D%84%20%EC%8B%A4%ED%96%89%ED%95%98%EC%A7%80%20%EC%95%8A%EB%8A%94%20%EC%9D%B4%EC%9C%A0.png)
저는 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