usando o comando notify-send ou zenity em Cron

5

Estou tentando fazer com que o cron forneça um alerta de tela quando detectar uma situação específica. Eu sei que o script é executado a cada minuto, mas não será exibido na tela.

O script

executado é:

DISPLAY=:0.0 /usr/bin/notify-send -t 1000 Test "This is a test"

Executando o Gnome da distribuição do Mandriva.

Alguma idéia?

    
por quack quixote 21.02.2010 / 23:45

2 respostas

5

É o crontab do seu usuário, não o crontab do root?

Sugiro que, pelo menos para depuração, você crie um script como John T descreve:

* * * * * /path/to/script.sh

Veja como o script pode parecer:

#!/bin/bash
{
    echo "trying to notify at $(date)"
    DISPLAY=:0.0 /usr/bin/notify-send -t 1000 Test "This is a test"
    echo "finished notify at $(date)"
} > /path/to/your-notify-debug.log 2>&1

Note que não há ":" antes do DISPLAY, como você parece ter na sua pergunta. Certifique-se de tornar este script executável ( chmod +x /path/to/script.sh ) e deixe o cron tentar executá-lo algumas vezes. Em seguida, examine o que foi gravado no arquivo de log.

    
por 26.02.2010 / 15:25
3

Você precisa ser capaz de se conectar ao barramento de sessão do usuário DBUS. Isso precisa ser o barramento da sessão e não o barramento do sistema. Você pode encontrar isso fazendo um

set | grep DBUS_SESSION_BUS_ADDRESS

então, no seu script, você precisa ter

export DBUS_SESSION_BUS_ADDRESS = {o que quer que seja}

faça seu envio de notificação

Como o barramento da sessão muda toda vez que você faz o login, talvez você queira adicionar algo aos seus scripts de login para gravar o DBUS_SESSION_BUS_ADDRESS em um arquivo, para que seu script possa ler e exportar isso.

    
por 26.02.2010 / 20:38