GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Cron mit Notify-Send

In Ubuntu 14.04 hat das Exportieren der Anzeige bei mir nicht funktioniert. Unten ist ein Cron-Skript, das ich verwende, um eine virtuelle Maschine herunterzufahren, wenn der Akkustand eines Laptops zu niedrig wird. Die Zeileneinstellung DBUS_SESSION_BUS_ADDRESS ist die Modifikation, die endlich dazu geführt hat, dass die Warnungen korrekt funktionieren.

#!/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

Die relevante Zeile ist hier:

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

Die Lösung habe ich hier gefunden:https://askubuntu.com/a/346580/255814


Nur das funktioniert bei mir (Xubuntu)

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

Wenn Sie sich in einer Gnome-Umgebung befinden, müssen Sie xfce4-session ändern bis gnome-session

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


Ich habe die Antwort gefunden:

$ 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"

Ich verwende i3 auf Ubuntu 18.04. Mein Weg, dies zu lösen, ist:

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

Edit 2020:Ich benutze es immer noch auf Ubuntu 20.04.


Linux
  1. Planen von Systemaufgaben mit Cron unter Linux

  2. Verwenden Sie Notify-Send mit Cron?

  3. Automatisieren Sie Systemaufgaben mit crontab auf CentOS 7

  4. So planen Sie Cron-Jobs mit Crontab

  5. Planen einer regelmäßigen Veranstaltung:Cron/Cron-Alternativen (einschließlich Sellerie)

So automatisieren Sie Aufgaben mit Cron-Jobs in Linux

Weiße oder schwarze Linien in der Konsolenausgabe mit Plasmaskalierung

Terminplanung mit cron &At

Crontab in Linux mit Beispielen verstehen

Cron Vs Anacron:So richten Sie Anacron unter Linux ein (mit einem Beispiel)

So planen Sie Jobs mit Cron in Linux