Этот сценарий отлично работает в 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.
Я уверен, что notify-send
нужно запускать от имени пользователя, который должен получать уведомления. Попробуйте заменить последнюю строку на следующую:
su user -c '/usr/bin/notify-send "title" "$(/bin/date)"'
Команда su user -c
переключает пользователя на user
и -c
передает оболочке следующую команду.
Этот оператор должен переключиться на правильного пользователя и выполнить команду.
Если вы хотите запустить весь сценарий от имени другого пользователя, посмотрите этот вопрос-ответ из Stack Overflow.