대화 상자에서 "예"를 클릭하면 내 컴퓨터를 백업하는 간단한 주간 Anacron 작업을 수행하려고 합니다. 내가 작성한 스크립트는 수동으로 실행하면 제대로 작동하지만 Anacron이 실행하면 아무 일도 일어나지 않습니다. Gtk-WARNING **: cannot open display
로그를 보면 알 수 있습니다. 분명히 스크립트는 그래픽 작업을 실행할 수 없는 단계에서 실행됩니다. Anacron 작업에서 이 대화 상자를 열 수 있는 방법이 있습니까?
암호:
#!/bin/sh
# Backs up the local filesystem on the external HDD
sleep 60
DISPLAY=:0.0
zenity --question --text "Do you want to backup? Be sure to turn on the HDD."
if [ $? -ne 0 ]
then exit 1
fi
*Do backup stuff here*
실수:
(zenity:2351): Gtk-WARNING **: cannot open display:
run-parts: /etc/cron.daily/backup-on-external exited with return code 1
답변1
$DISPLAY
환경 변수 없이 실행 중일 수도 있습니다 . 셸에 있는 경우 echo $DISPLAY
해당 값이 무엇인지(대부분 :0.0
) 볼 수 있으며 crontab 파일에서 해당 값을 지정할 수 있습니다.
DISPLAY=:0.0 dialog ...
답변2
내 상황은 약간 다릅니다. 루트 권한으로 cron에서 GUI 애플리케이션을 실행해야 합니다. 쉘 스크립트의 다음 줄이 문제를 해결했습니다.
export DISPLAY=:0,0
export XAUTHORITY=/home/{logged in user}/.Xauthority
물론 따라하면 안되는거지만이 기사, 하지만 아직 더 나은 해결책을 찾지 못했습니다.
답변3
시스템 전체 대신 사용자의 crontab을 사용해야 합니다.
crontab -e를 시도하거나($EDITOR에서 사용자의 crontab 열기) '여기에 crontab 줄'을 입력하세요. -
답변4
사용자별 anacrontab을 정의할 수 있습니다.
sudo anacron -t ${HOME}/.anacron/anacrontab -S ${HOME}/.anacron/spool
-t
= 기본 아나크론탭 대신 지정된 아나크론탭을 사용하세요
-S
= 지정된 spooldir을 사용하여 타임스탬프를 저장합니다. 이 옵션은 anacron을 직접 실행하려는 사용자에게 필요합니다.
~/.profile
로그인 시 실행되는 명령 에 해당 명령을 추가합니다 .
"/etc/sudoers"에 다음 행을 추가하여 비밀번호 없이 "sudo anacron"이 실행되도록 허용합니다.
user ALL=(ALL:ALL) NOPASSWD: /usr/sbin/anacron
("user"를 사용자 이름으로 바꾸세요)
이와 같이 사용자의 $DISPLAY
및를 설정해야 합니다.$XAUTHORITY