Никакой звук от crontab запускающий моего пользовательского скрипта

#! /bin/bash


# read battery percentage value
OUT=`upower -i /org/freedesktop/UPower/devices/battery_BAT1 | grep percentage`


# select only the int value
IFS=':' read -ra P <<< "$OUT"
PERCENTAGE="%"
BATTERY_VALUE=${P[1]%$PERCENTAGE}


# send a notification if battery level is under 15% and not on AC power

if ! on_ac_power; then 
    if (($BATTERY_VALUE  < "15")); then
        eval "export $(egrep -z DBUS_SESSION_BUS_ADDRESS /proc/$(pgrep -u $LOGNAME gnome-session)/environ)";
        notify-send -u critical -i "battery-caution" "Battery low! You should plug in your laptop!"
        /usr/bin/aplay /usr/share/sounds/desktop-logout.oga
    fi
fi

# send a notification if battery level is equal to or over 90% and is on AC power

if on_ac_power; then
    if (($BATTERY_VALUE  >= "90")); then
        eval "export $(egrep -z DBUS_SESSION_BUS_ADDRESS /proc/$(pgrep -u $LOGNAME gnome-session)/environ)";
        notify-send -u critical -i "battery-full-charging" "Battery charged! You should unplug your laptop!"
        /usr/bin/aplay /usr/share/sounds/desktop-logout.oga
    fi
fi

Звук и сценарий, хорошо работающий, если я выполняю сценарий вручную. Я добираюсь, уведомление от уведомляют - отправляют, но оно не играет звук от crontab. Журнал крона говорит:

Connection failure: Connection refused
pa_context_connect() failed: Connection refused. 

Я попробовал команду paplay и указывающий на полный путь paplay в /usr/bin/paplay напрасно.

1
задан 4 January 2018 в 18:58

1 ответ

Я обнаружил, что когда я должен отправить звук с pulseaudio в командной строке другому пользователю, вы должны указать переменную среды:

XDG_RUNTIME_DIR="/run/user/usr_id"

Заменив "usr_id`" на id (число), соответствующий пользователю (здесь как его получить вне crontab).

Проблема в том, что среда crontab очень ограничена.

Источник: ArchLinux Wiki: PulseAudio

2
ответ дан 25 May 2020 в 17:00

Другие вопросы по тегам:

Похожие вопросы: