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

通知送信によるcron

Ubuntu 14.04 では、ディスプレイのエクスポートが機能しませんでした。以下は、ラップトップのバッテリー状態が低くなりすぎたときに仮想マシンをシャットダウンするために使用している cron スクリプトです。行設定 DBUS_SESSION_BUS_ADDRESS は、最終的に警告が正しく機能するようになった変更です。

#!/bin/bash

# if virtual machine is running, monitor power consumption
if pgrep -x vmware-vmx; then

  bat_path="/sys/class/power_supply/BAT0/"

  if [ -e "$bat_path" ]; then

    bat_status=$(cat $bat_path/status)

    if [ "$bat_status" == "Discharging" ]; then

      bat_current=$(cat $bat_path/capacity)

      # halt vm if critical; notify if low
      if [ "$bat_current" -lt 10 ]; then

        /path/to/vm/shutdown/script
        echo "$( date +%Y.%m.%d_%T )" >> "/home/user/Desktop/VM Halt Low Battery"

        elif [ "$bat_current" -lt 15 ]; then
        eval "export $(egrep -z DBUS_SESSION_BUS_ADDRESS /proc/$(pgrep -u $LOGNAME gnome-session)/environ)";
        notify-send -i "/usr/share/icons/ubuntu-mono-light/status/24/battery-caution.svg"  "Virtual machine will halt when battery falls below 10% charge."

      fi

    fi

  fi

fi

exit 0

関連する行は次のとおりです:

eval "export $(egrep -z DBUS_SESSION_BUS_ADDRESS /proc/$(pgrep -u $LOGNAME gnome-session)/environ)";

ここで解決策を見つけました:https://askubuntu.com/a/346580/255814


これだけが機能します(Xubuntu)

eval "export $(egrep -z DBUS_SESSION_BUS_ADDRESS /proc/$(pgrep -u $LOGNAME xfce4-session)/environ)"; notify-send  "hello world" 

gnome 環境の場合は xfce4-session を変更する必要があります gnome-sessionまで

参照:https://askubuntu.com/questions/298608/notify-send-doesnt-work-from-crontab


答えが見つかりました:

$ crontab -l
# m h  dom mon dow   command
  * *   *   *   *    export DISPLAY=:0.0 && export XAUTHORITY=/home/ravi/.Xauthority && sudo -u ravi /usr/bin/notify-send Hey "How are you"

Ubuntu 18.04 で i3 を使用しています。これを解決する私の方法は次のとおりです:

* * * * * XDG_RUNTIME_DIR=/run/user/$(id -u) notify-send Hey "this is dog!"

編集 2020:Ubuntu 20.04 でまだ使用しています。


Linux
  1. Linuxcronコマンドを使用したタスクのスケジューリング

  2. CentOS7でcrontabを使用してシステムタスクを自動化する

  3. bash.sh で cron を実行する権限が拒否されました

  1. LinuxでのCronを使用したシステムタスクのスケジューリング

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

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

  1. 定期的なイベントのスケジュール:Cron/Cron の代替 (Celery を含む)

  2. Mac OS で Cron を使用して自作を更新する方法

  3. 未知の名前を持つ新しく作成されたファイルに対する Tail -f