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


3

매 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) 

답변:


3

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

#!/bin/bash

set > /tmp/myset.txt

X 기반 응용 프로그램을 실행하는 데 필요한 DISPLAY 변수가 설정되어 있지 않다는 것을 알 수 있습니다 (그리고 드문 예외를 제외하고는 우리가 사용하는 모든 것이 그 종류입니다).

당신은 같은 것을 넣어야합니다

export DISPLAY=:0.0

당신의 스크립트에 더 나은 확률을 가지고.


1

지침으로 곰 바이의 답변을 완성하려면 :

를 실행 env | grep -i display하고 값을 확인하십시오 DISPLAY. 아마도 :0.0또는 :0입니다.

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

*/10 * * * * DISPLAY=:0 /bin/sh /home/tim/Dokumente/Scripts/wallpaper.sh
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.