特定の状況を見つけたときに画面アラートを提供するようにcronを取得しようとしています。スクリプトが毎分実行されることは知っていますが、画面に表示されません。
実行されるスクリプトは次のとおりです。
DISPLAY=:0.0 /usr/bin/notify-send -t 1000 Test "This is a test"
MandrivaディストリビューションからGnomeを実行しています。
何か案は?
これは、rootのcrontabではなく、ユーザーのcrontabですか?
少なくともデバッグについては、JohnTが説明するようにスクリプトを作成することをお勧めします。
* * * * * /path/to/script.sh
スクリプトは次のようになります。
#!/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
質問にあるように、DISPLAYの前に「:」がないことに注意してください。このスクリプトは必ず実行可能にしてください(chmod +x /path/to/script.sh
)そしてcronにそれを数回実行させてください。次に、ログファイルに何が書き込まれたかを調べます。
DBUSユーザーセッションバスに接続できる必要があります。これは、システムバスではなくセッションバスである必要があります。あなたはそれをすることによってそれを見つけることができます
セット| grep DBUS_SESSION_BUS_ADDRESS
次に、スクリプトで次のことを行う必要があります
export DBUS_SESSION_BUS_ADDRESS = {それが何であれ}
次に、通知送信を行います
ログインするたびにセッションバスが変化するため、ログインスクリプトに何かを追加して、DBUS_SESSION_BUS_ADDRESSをファイルに書き込み、スクリプトがそれを読み込んでエクスポートできるようにすることをお勧めします。