Notify-send не работает из ROOT crontab

Этот сценарий отлично работает в crontab пользователя, но мне нужно запустить его из корневого crontab, но он не работает:

#!/bin/sh 
# cron.sh
# Notifies the user of date and time
source /home/user/.bashrc
pid=$(pgrep -u user openbox | 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/user
export DISPLAY=:0
/usr/bin/notify-send 'title' "$(/bin/date)"

Сценарий был найдено здесь: скрипт crontab

Скрипт размещен в /home/user/cron.sh со всеми разрешениями (777). Мой корневой crontab:

* * * * * /home/user/cron.sh

Если Я использую этот скрипт в crontab обычного пользователя, он работает и показывает всплывающий текст, но не из корневого crontab. Системный журнал ( / var / log / syslog ) не показывает ошибки при запуске crontab.

0
задан 11 June 2021 в 13:16

1 ответ

Я уверен, что notify-send нужно запускать от имени пользователя, который должен получать уведомления. Попробуйте заменить последнюю строку на следующую:

su user -c '/usr/bin/notify-send "title" "$(/bin/date)"'

Команда su user -c переключает пользователя на user и -c передает оболочке следующую команду.

Этот оператор должен переключиться на правильного пользователя и выполнить команду.

Если вы хотите запустить весь сценарий от имени другого пользователя, посмотрите этот вопрос-ответ из Stack Overflow.

1
ответ дан 28 July 2021 в 11:30

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

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