通知を送信するようにPythonスクリプトが必要です。スクリプトが正常に実行され、私が望むものを表示します。しかし、crontabは正しい方法で起動しません。
以下はlibnotifyを参照するコードです。
def SendMessage(title, message):
pynotify.init("ChinaBank")
notice = pynotify.Notification(title,message)
notice.show()
return
私がcrontabでやったことは次のとおりです。
* * * * * display=`/home/li/script/FetchDisplay.sh` && export DISPLAY=$display && /home/li/projects/fetch-data/EuroForex.py 2>/home/li/error
ここで、FetchDisplay.shは次のように表示コンテンツを取得します。
#!/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}
エラー出力は次のとおりです。
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
わかると、モニター:0
、コマンドを通して
echo $DISPLAY
だから私はgnome-screensaver-commandをテストしました。
* * * * * export DISPLAY=:0 && /usr/bin/gnome-screensaver-command --lock 2>/home/li/screenerror
残念ながら動作しておらず、出力は次のようになります。
** Message: Failed to get session bus: Error spawning command line 'dbus-launch --autolaunch=970be6bbf9ff49009918057c308cf56e --binary-syntax --close-stderr': Child process exited with code 1
DISPLAYの問題だと思いましたが、DISPLAY変数が正しいです。何が起こったのか教えてもらえますか?
答え1
私はここで答えを見つけました。 cronを使用してUbuntuでPidgin IMステータスを更新する
cronは独自の環境で実行されるため、DBUS_SESSION_BUS_ADDRESS、XAUTHORITY、およびDISPLAY変数を見つける必要があります。指示に従って変数を正常に設定しました。
今私のスクリプトが動作します!