gnome-schedule 아래의 쉘 스크립트에서 zenity 출력을 얻지 못하는 이유는 무엇입니까?

gnome-schedule 아래의 쉘 스크립트에서 zenity 출력을 얻지 못하는 이유는 무엇입니까?

저는 Fedora Linux 12를 사용하고 있으며 곧 최신 버전으로 업데이트할 계획입니다. 이에 대비하기 위해 외장 드라이브에 전체 백업을 해두었습니다. rsync를 사용하여 이 백업을 최신 상태로 유지하고 싶습니다. 시스템은 아래에 설명되어 있습니다 http://webgnuru.com/linux/rsync_incremental.php.

백업을 예약하려면 gnome-schedule을 사용하고 zenity를 사용하여 컴퓨터 화면에 안심할 수 있는 메시지를 출력하고 싶습니다.

나는 모든 귀중한 노력을 기울이기 전에 이것을 소규모로 테스트하고 있습니다. 여기에 내 쉘 스크립트 목록이 있습니다. 업데이트가 완벽하게 작동하므로 제 질문은 다음과 같습니다. 마지막에 zenity 명령에서 출력을 얻지 못하는 이유는 무엇입니까?

#!/bin/bash
# Adapted from: http://webgnuru.com/linux/rsync_incremental.php
#  Website Backup Script
#======================================================================
# Define Variables
# Todays date in ISO-8601 format e.g. 2013-10-19:
DAY0=`date -I` 
# Yesterdays date in ISO-8601 format:
DAY1=`date -I -d "1 day ago"`
# The source directory:
SRC="/home/Harry/testrsync/bravo/"
# The target directory:
TRG="/home/Harry/testrsync/backups/$DAY0" 
# The link destination directory:
LNK="/home/Harry/testrsync/backups/$DAY1"
#The rsync options:
OPT="-avh --delete --link-dest=$LNK"
#======================================================================
#Execute the backup
rsync $OPT $SRC $TRG
#Delete old backups cyclically
# for my tests I am going to use a three day cycle
DAY4=`date -I -d "4 days ago"`
#Delete the backup from 4 days ago, if it exists
if [ -d /home/Harry/testrsync/backups/$DAY4 ]
then
rm -r /home/Harry/testrsync/backups/$DAY4
fi
zenity --info --text='Backup complete' --title="Backup Test"

답변1

모호한 구문과 모호한 참조로 이틀 동안 씨름한 끝에 답을 찾았습니다.

Gnome Schedule의 도움말 문서에는 다음과 같이 기록되어 있습니다.

9.2. Setting DISPLAY variable for tasks that will launch once

When you are creating or modifying a task, you can define the DISPLAY 
variable in the script text box. Make the definition at the beginning of the
script.

9.3. Setting DISPLAY variable for tasks that will launch recurrently

Gnome Schedule does not support yet setting environment variables for
recurrent tasks, but it will do soon. In the meantime, you can manually create
a script that first defines DISPLAY variable and then calls the graphical
application. Finally, you can create a recurrent task to launch the script.

fred.sh그래서 다음 내용으로 스크립트 파일을 만들었습니다.

#!/bin/sh
DISPLAY=:0.0
#home/Harry/testrsync/trial_bak.sh
testrsync/trial_bak.sh

fred.sh스크립트를 예약된 작업으로 사용합니다 . 질문에서 테스트 작업 스크립트의 이름을 trial_bak.sh. 호출된 스크립트는 fred.sh홈 디렉터리를 통해 참조되어야 합니다. 즉, 위에 주석 처리된 줄이 아닌 마지막 줄로 참조되어야 합니다. 이제 작동하고 필요한 정보 창이 나타납니다.

이는 Gnome Schedule 구성의 "한 번 실행" 미리보기가 작동할 수 있다는 것을 의미합니다. 이는 나에게 작동하는 것처럼 혼란스럽습니다( at대신 사용할 수 있다고 생각했습니다 cron). 하지만 루프로 수행해야 합니다. 테스트를 받아 결정합니다.

DISPLAY=:0.0처음에는 질문의 스크립트 마지막 줄에 추가했지만 나중에 이것이 필요하지 않다는 것을 알았습니다.

너무 많은 정보가 쏟아져 나오 니까 xdpyinfo | less어떤 것을 사용해야 하는지 확인 하곤 했어요 .DIPSPLAY=...less

마지막으로, 나는 그것이 확정적이거나 완전하거나 심지어 완전히 정확하다고 주장하지 않고 내가 찾은 결과를 설명합니다. 누구나 추가할 수 있는 관련 추가 정보에 관심이 있습니다.

관련 정보