GNU/Linux >> Tutoriels Linux >  >> Linux

Cron avec notification-envoi

Dans Ubuntu 14.04, l'exportation de l'affichage ne fonctionnait pas pour moi. Vous trouverez ci-dessous un script cron que j'utilise pour arrêter une machine virtuelle lorsque l'état de la batterie d'un ordinateur portable devient trop faible. Le paramètre de ligne DBUS_SESSION_BUS_ADDRESS est la modification qui a finalement permis aux avertissements de fonctionner correctement.

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

La ligne correspondante est ici :

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

J'ai trouvé la solution ici :https://askubuntu.com/a/346580/255814


Seulement cela fonctionne pour moi (Xubuntu)

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

Si vous êtes dans un environnement gnome, vous devez modifier xfce4-session à gnome-session

référez-vous :https://askubuntu.com/questions/298608/notify-send-doesnt-work-from-crontab


J'ai trouvé la réponse :

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

J'utilise i3 sur Ubuntu 18.04. Ma façon de résoudre ce problème est la suivante :

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

Edit 2020 :Je l'utilise toujours sur Ubuntu 20.04.


Linux
  1. Planification des tâches avec la commande Linux cron

  2. Utiliser Notify-send avec Cron ?

  3. Automatisez les tâches système avec crontab sur CentOS 7

  4. Planification d'un événement régulier :alternatives Cron/Cron (y compris Celery)

  5. comment mettre à jour homebrew avec Cron sur Mac os

Comment automatiser des tâches avec des tâches cron sous Linux

Lignes blanches ou noires dans la sortie Konsole avec mise à l'échelle plasma

Planification avec cron &At

Comprendre Crontab sous Linux avec des exemples

Cron Vs Anacron :Comment configurer Anacron sous Linux (avec un exemple)

Comment planifier des tâches avec Cron sous Linux