Как получить информацию о команде gnome-screensaver, передаваемую в скрипт, вызываемый CRONTAB

На этом компьютере есть два ПОЛЬЗОВАТЕЛЯ: jdl и эксперимент

Настройка CRONTAB (для эксперимента (выполняется каждую минуту):

USER=experiment
HOME=/home/experiment
SHELL=/bin/bash
PATH=/home/experiment/bin:/home/experiment/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
XAUTHORITY=/home/experiment/.Xauthority
DISPLAY=:0

*/1 * * * * /home/experiment/monitor

Из командной строки запуск сценария (монитора) с: (дает Inactive)

if (gnome-screensaver-command -q | grep "is inactive"); then
    # Inactive screensaver
    echo "screensaver: Inactive">>log_log.txt
elif (gnome-screensaver-command -q | grep "is active"); then
    # Active screensaver
    echo "screensaver: Active">>log_log.txt
else
    # N/A active screensaver
    echo "screensaver: N/A">>log_log.txt
fi

Но из CRONTAB (запускает сценарий: monitor) ... запуск того же сценария: (дает N / A), поскольку область действия не относится к конкретному пользователю

Как получить статус заставки для определенного пользователя при запуске сценария из CRONTAB?

0
задан 23 December 2020 в 05:54

1 ответ

РЕШЕНО:

Использование Notify-send не работает из crontab

НЕОБХОДИМО УСТАНОВИТЬ DBUS:

Использование pid первых результатов сеанса gnome для поиска DBUS_SESSION_BUS_ADDRESS :

source /home/experiment/.bashrc
pid=$(pgrep -u experiment gnome-session | head -n 1)
dbus=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$pid/environ | sed 's/DBUS_SESSION_BUS_ADDRESS=//' )
export DBUS_SESSION_BUS_ADDRESS=$dbus
export HOME=/home/experiment
export DISPLAY=:0
export USER=experiment


if (gnome-screensaver-command -q | grep "is active"); then
    echo $(date) :::: $USER :::: Active>> $HOME/crondate.txt 
    uu="user: $USER   date: $(date)   screensaver: ACTIVE"
elif (gnome-screensaver-command -q | grep "is inactive"); then
    echo $(date) :::: $USER :::: InActive>> $HOME/crondate.txt 
    uu="user: $USER   date: $(date)   screensaver: INACTIVE"
else
    echo $(date) :::: $USER :::: N/A>> $HOME/crondate.txt 
    uu="user: $USER   date: $(date)   screensaver: N/A"
fi
0
ответ дан 23 December 2020 в 17:51

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

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