Anacron 작업에서 "Gtk-WARNING **: 디스플레이를 열 수 없습니다"라고 불평합니다.

Anacron 작업에서 "Gtk-WARNING **: 디스플레이를 열 수 없습니다"라고 불평합니다.

대화 상자에서 "예"를 클릭하면 내 컴퓨터를 백업하는 간단한 주간 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

관련 정보