GNU/Linux >> Belajar Linux >  >> Linux

Cron dengan notifikasi-kirim

Di Ubuntu 14.04 mengekspor tampilan tidak berfungsi untuk saya. Di bawah ini adalah skrip cron yang saya gunakan untuk mematikan mesin virtual ketika kondisi baterai laptop menjadi terlalu lemah. Pengaturan baris DBUS_SESSION_BUS_ADDRESS adalah modifikasi yang akhirnya membuat peringatan berfungsi dengan benar.

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

Baris yang relevan ada di sini:

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

Saya menemukan solusinya di sini:https://askubuntu.com/a/346580/255814


Hanya ini yang berfungsi untuk saya (Xubuntu)

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

Jika Anda berada di lingkungan gnome, Anda perlu mengubah xfce4-session ke gnome-session

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


Saya menemukan jawabannya:

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

Saya menggunakan i3 di Ubuntu 18.04. Cara saya untuk menyelesaikan ini adalah:

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

Sunting 2020:Saya masih menggunakannya di Ubuntu 20.04.


Linux
  1. Menjadwalkan tugas sistem dengan Cron di Linux

  2. Menggunakan Notify-send Dengan Cron?

  3. Cara Menjadwalkan Pekerjaan Cron dengan Crontab

  1. Menjadwalkan tugas dengan perintah cron Linux

  2. Otomatiskan Tugas Sistem dengan crontab di CentOS 7

  3. Izin ditolak dengan bash.sh untuk menjalankan cron

  1. Menjadwalkan acara reguler:Alternatif Cron/Cron (termasuk Seledri)

  2. cara memperbarui homebrew dengan Cron di Mac os

  3. Tail -f pada file yang baru dibuat dengan nama yang tidak dikenal