dbus-laauch falha causada pelo processo de saída da criança

1

Eu quero um script python para enviar uma notificação. O script pode ser executado com sucesso e mostrar o que eu quero. mas o crontab não inicializou de maneira correta.

o seguinte é o código que se refere à libnotify

def SendMessage(title, message):
    pynotify.init("ChinaBank")
    notice = pynotify.Notification(title,message)
    notice.show()
    return

o que eu fiz no crontab é

* * * * * display='/home/li/script/FetchDisplay.sh' && export DISPLAY=$display && /home/li/projects/fetch-data/EuroForex.py 2>/home/li/error

Aqui, o FetchDisplay.sh é para obter a exibição da seguinte forma:

#!/bin/bash 

if [ "$DISPLAY" != "" ]; then
        echo $DISPLAY
        exit
fi

if ["$USER" = "" ]; then
        USER='whoami'
fi

pinky -fw | awk -v user=$USER 'NF == 6 {if($1 == user) {print $6}}' | awk 'NR==1{print $0}

a saída do erro é

Traceback (most recent call last):
  File "/home/li/projects/fetch-data/EuroForex.py", line 43, in <module>
    SendMessage("Please be ready to sell", str(SellData))  
  File "/home/li/projects/fetch-data/EuroForex.py", line 15, in SendMessage
    notice.show()
glib.GError: Error spawning command line 'dbus-launch --autolaunch=970be6bbf9ff49009918057c308cf56e --binary-syntax --close-stderr': Child process exited with code 1

Eu sei que o DISPLAY é :0 , através do comando

echo $DISPLAY

portanto, testo o comando gnome-screensaver com ele.

* * * * *  export DISPLAY=:0 && /usr/bin/gnome-screensaver-command --lock 2>/home/li/screenerror

Infelizmente, não funcionou e a saída é

** Message: Failed to get session bus: Error spawning command line 'dbus-launch --autolaunch=970be6bbf9ff49009918057c308cf56e --binary-syntax --close-stderr': Child process exited with code 1

Eu pensei que é o problema de DISPLAY, mas a variável DISPLAY está correta. Você poderia dizer o que está acontecendo?

    
por user1532868 24.02.2017 / 05:11

1 resposta

0

Eu encontro a resposta daqui. Atualize o status do Pidgin IM no Ubuntu usando o cron

cron é executado em seu próprio ambiente, portanto, temos que encontrar as variáveis DBUS_SESSION_BUS_ADDRESS, XAUTHORITY e DISPLAY. Eu segui a instrução e consegui definir as variáveis.

Meu script pode funcionar agora!

    
por 24.02.2017 / 15:37