GNU/Linux >> Tutoriales Linux >  >> Linux

Cron con notificación-envío

En Ubuntu 14.04, exportar la pantalla no funcionó para mí. A continuación se muestra un script cron que estoy usando para apagar una máquina virtual cuando el estado de la batería de una computadora portátil es demasiado bajo. La configuración de línea DBUS_SESSION_BUS_ADDRESS es la modificación que finalmente hizo que las advertencias funcionaran correctamente.

#!/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 línea relevante está aquí:

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

Encontré la solución aquí:https://askubuntu.com/a/346580/255814


Solo esto me funciona (Xubuntu)

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

Si está en el entorno gnome, necesita cambiar xfce4-session a gnome-session

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


Encontré la respuesta:

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

Uso i3 en Ubuntu 18.04. Mi forma de resolver esto es:

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

Edición 2020:todavía lo uso en Ubuntu 20.04.


Linux
  1. Programación de tareas con el comando cron de Linux

  2. Automatice las tareas de los sistemas con crontab en CentOS 7

  3. Programación de un evento regular:alternativas Cron/Cron (incluido Celery)

  4. Permiso denegado con bash.sh para ejecutar cron

  5. Tail -f en archivos recién creados con nombres desconocidos

Cómo automatizar tareas con trabajos cron en Linux

Líneas blancas o negras en la salida de Konsole con escala de Plasma

Programación con cron &At

Entendiendo Crontab en Linux con ejemplos

Cron Vs Anacron:Cómo configurar Anacron en Linux (con un ejemplo)

Cómo programar trabajos con Cron en Linux