por que não obtenho nenhuma saída do zenity no shell script em gnome-schedule

1

Estou usando o Fedora Linux 12 e pretendo atualizar para uma versão atualizada em breve. Para me preparar para isso, fiz um backup completo em uma unidade externa. Eu quero manter este backup atualizado, usando o rsync, com o sistema descrito em: http://webgnuru.com/linux/rsync_incremental.php .

Para agendar os backups, eu quero usar o gnome-schedule e enviar mensagens reconfortantes para a tela do meu computador com zenity.

Estou testando isso em pequena escala antes de dedicar todo o meu precioso a isso, e Aqui está uma lista do meu script de shell. As atualizações funcionam perfeitamente, então a minha pergunta é: por que não recebo nenhuma saída do comando zenity no final?

#!/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"
    
por Harry Weston 25.10.2013 / 21:24

1 resposta

1

Eu encontrei a resposta, depois de dois dias lutando com sintaxe arcana e referências obscuras.

No documento de ajuda do Gnome Schedule, ele diz:

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.

Nesse sentido, criei o arquivo de script fred.sh com o conteúdo:

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

e usou o script fred.sh como a tarefa agendada. Eu tinha chamado o script de tarefa de teste na minha pergunta trial_bak.sh . Observe que o script chamado de fred.sh deve ser referenciado por meio do diretório inicial, ou seja, como a última linha não a comentada acima. Agora funciona e eu recebo a janela de informações desejada.

Note que isso significa que uma pré-visualização "executar uma vez" na configuração do Gnome Schedule pode funcionar, como foi confuso para mim (acho que pode usar at em vez de cron ), mas precisa ser testado como uma tarefa recorrente para ter certeza.

No começo, adicionei DISPLAY=:0.0 à última linha do script na pergunta, mas descobri que não era necessário

Eu usei xdpyinfo | less para verificar o que usar em DIPSPLAY=... , o less sendo necessário porque uma grande quantidade de informações é divulgada.

Finalmente, descrevi o que descobri e não afirmo que seja definitivo ou completo, ou mesmo inteiramente correto. Eu estaria interessado em qualquer informação extra relevante que alguém possa adicionar,

    
por 26.10.2013 / 17:16