3

crontabを介して実行され、完全に機能するPythonプログラムがあります。しかし、私はそれが何をしているのかを私に通知する機能を追加することに決めました、そして突然それは失敗します。コマンドラインから実行しますが、crontabプログラムとして実行すると失敗します

libnotify-Message: Unable to get session bus: /bin/dbus-launch terminated abnormally with the following error: Autolaunch error: X11 initialization failed.

私は何が間違っているのですか?

編集 このプログラムを引き続きcronから実行し、ユーザーにその作業を通知できるようにしたいと思います。これを行う方法はありますか?

編集 2rootのcrontabを使用してみましたsudo -u esr python script.pyが、これも失敗します。

編集3 可能です!これがコードです。

* * * * * su $user -c "DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$(ps -au esr | grep -i "gnome-session" | awk '{ print $1 }')/environ | sed -e 's/DBUS_SESSION_BUS_ADDRESS=//') $(whereis notify-send | awk '{ print $2 }') -u normal -t 20000 \"Hello\" "
4

4 に答える 4

4
* * * * * su esr -c "DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$(ps -au esr | grep -i "gnome-session" | awk '{ print $1 }')/environ | sed -e 's/DBUS_SESSION_BUS_ADDRESS=//') $(whereis notify-send | awk '{ print $2 }') -u normal -t 20000 \"Hello\" "

提案、説明によると、残念ながら私のものではありません

于 2010-07-21T18:27:48.527 に答える
2

上記のリソースが利用できない環境で、ユーザー リソースを必要とするスクリプトを実行しようとしています。これを機能させたい場合は、スクリプトから PyGTK およびセッション バスへのすべての参照を削除する必要があります。

于 2010-07-21T17:56:52.447 に答える
2

次のレシピは素晴らしいウィンドウ マネージャーのユーザーに有効であることをお伝えしたいと思います。

*/1 * * * * DBUS_SESSION_BUS_ADDRESS=$(grep -zi DBUS /proc/$(pgrep awesome)/environ | sed -r -e 's/^DBUS_SESSION_BUS_ADDRESS=//') DISPLAY=":0.0" notify-send -t 0 blah blah
于 2012-10-05T17:37:04.857 に答える
1

グラフィカル端末にアクセスできない cron プログラムに GUI (GTK+ ライブラリ呼び出し) を使用しようとしています。cron から実行する場合は、ダイアログとウィンドウを作成しないようにする必要があります。

于 2010-07-21T17:55:18.687 に答える