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?