O trabalho do Anacron reclama “Gtk-WARNING **: não é possível abrir o display”

2

Estou tentando fazer um trabalho semanal simples do Anacron que faz o backup do meu computador se eu clicar em yes na caixa de diálogo. O script que escrevi funciona bem se for executado manualmente, mas quando o Anacron o executa, nada acontece e vejo Gtk-WARNING **: cannot open display nos logs. Aparentemente, o script é executado em um estágio em que as operações gráficas não podem ser executadas. Existe alguma maneira de obter este diálogo para abrir a partir de um trabalho Anacron?

Código:

#!/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*

Erro:

(zenity:2351): Gtk-WARNING **: cannot open display: 
run-parts: /etc/cron.daily/backup-on-external exited with return code 1
    
por Cory Walker 22.11.2010 / 05:56

4 respostas

3

Ele provavelmente está sendo executado sem a variável de ambiente $DISPLAY . Se você echo $DISPLAY no seu shell você pode ver qual é o seu valor (provavelmente :0.0 ), então você pode especificar isso no arquivo crontab:

DISPLAY=:0.0 dialog ...
    
por 22.11.2010 / 06:00
0

Você deve usar o crontab do usuário em vez de todo o sistema.

Tente crontab -e (abre o crontab do usuário em $ EDITOR) ou ecoa 'sua linha crontab aqui' | crontab -

    
por 29.11.2010 / 07:43
0

funciona para mim com DISPLAY =: 0.0, mas eu tenho apenas um usuário no sistema, então especifico esse usuário em / etc / crontab

    
por 18.12.2010 / 15:17
0

Você pode definir um anacrontab específico do usuário:

sudo anacron -t ${HOME}/.anacron/anacrontab -S ${HOME}/.anacron/spool

-t = Use anacrontab especificado, em vez do padrão

-S = Use o spooldir especificado para armazenar timestamps, esta opção é necessária para usuários que desejem rodar o próprio anacron.

Adicione o comando em seu ~/.profile para executar ao fazer o login.

Permitir executar 'sudo anacron' sem senha adicionando a seguinte linha ao '/ etc / sudoers':

user    ALL=(ALL:ALL) NOPASSWD: /usr/sbin/anacron

(Substitua "usuário" pelo seu nome de usuário)

Assim como o $DISPLAY e o $XAUTHORITY do usuário devem ser definidos.

    
por 01.08.2014 / 09:12