GNU/Linux >> Linux の 問題 >  >> Linux

Notify-Send With Cronを使用していますか?

私はKDE/AwesomeWMでArchLinuxを使用しています。
notify-sendを取得しようとしています cronを使用するには 。

DISPLAYを設定してみました / XAUTHORITY 変数、およびnotify-sendの実行 「sudo-u」を使用すると、すべて結果が表示されません。

通知を呼び出すことができます-セッションからインタラクティブに送信し、通知を受け取ります。

FWIW、cronジョブは正常に実行されています。これは、一時ファイルにエコーすることで確認しました。動作しないのは「通知-送信」だけです。

コード:

[[email protected] ~]$ crontab -l
* * * * *  /home/matrix/scripts/notify.sh

[[email protected] ~]$ cat /home/matrix/scripts/notify.sh
#!/bin/bash
export DISPLAY=127.0.0.1:0.0
export XAUTHORITY=/home/matrix/.Xauthority
echo "testing cron" >/tmp/crontest
sudo -u matrix /usr/bin/notify-send "hello"
echo "now tested notify-send" >>/tmp/crontest

[[email protected] ~]$ cat /tmp/crontest
testing cron
now tested notify-send

[[email protected] ~]$ 

ご覧のとおり、notify-sendが機能する前後のエコーを確認できます。
また、DISPLAY=:0.0を設定してみました

更新:
もう少し検索したところ、DBUS_SESSION_BUS_ADDRESSを設定する必要があることがわかりました。そして、インタラクティブセッションから取得した値を使用してこれをハードコーディングした後、小さな「こんにちは」メッセージが毎分画面にポップアップし始めました!

ただし、この変数はその投稿ごとに永続的ではないため、そこで提案されている名前付きパイプソリューションを試してみます。

[[email protected] ~]$ cat scripts/notify.sh
#!/bin/bash
export DISPLAY=127.0.0.1:0.0
export XAUTHORITY=/home/matrix/.Xauthority
export DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-BouFPQKgqg,guid=64b483d7678f2196e780849752e67d3c
echo "testing cron" >/tmp/crontest
/usr/bin/notify-send "hello"
echo "now tested notify-send" >>/tmp/crontest

cron以降 通知送信をサポートしていないようです(少なくとも直接ではありません)cronである他の通知システムはありますか 使いやすい?

承認された回答:

DBUS_SESSION_BUS_ADDRESSを設定する必要があります 変数。デフォルトでは、cronは
変数にアクセスできません。これを修正するには、次のスクリプトを
どこかに置き、ユーザーがログインしたときに、たとえば awesomeを使用して呼び出します。 および
run_once wikiに記載されている関数。関数が必要以上に頻繁に呼び出されても
害はないので、どの方法でもかまいません。

#!/bin/sh

touch $HOME/.dbus/Xdbus
chmod 600 $HOME/.dbus/Xdbus
env | grep DBUS_SESSION_BUS_ADDRESS > $HOME/.dbus/Xdbus
echo 'export DBUS_SESSION_BUS_ADDRESS' >> $HOME/.dbus/Xdbus

exit 0

これにより、必要なDbus環境変数を含むファイルが作成されます。次に、
cronによって呼び出されたスクリプトで、スクリプトをソースして変数をインポートします。

if [ -r "$HOME/.dbus/Xdbus" ]; then
  . "$HOME/.dbus/Xdbus"
fi

これが同じ
メカニズムを使用する答えです。

関連:SSHFPレコードを生成する方法は?
Linux
  1. cronラッパースクリプトの使用

  2. Mcでワードラップを使用していますか?

  3. Duコマンドで–excludeを使用しますか?

  1. Crontabを使用してcronジョブをスケジュールする方法

  2. printf での色の使用

  3. 通知送信によるcron

  1. sed を使用して区切り文字で文字列を分割する

  2. cron ジョブを使用してログ ファイルを削除する

  3. Linuxでg ++を使用してSDL2を使用していますか?