notify-send и крон [Решено]

Приветствую!
Сделал скрипт, для синхронизации инфы между пк, захотелось, чтобы после синхронизации вылезало сообщение системное. Скрипт (см. Ниже) работает хорошо, но через крон сообщение не вылезает, хотя когда запускаю через консоль - все ок, перерыл фигову тучу сайтов, пробовал подставлять всякую разную лабуду из советов, у всех эта проблема решается с помощью тех советов, у меня нет )

#!/bin/sh
export DISPLAY=:0
if unison 123 -ui text; then /usr/bin/notify-send "Синхронизация" "прошла успешно" -i /usr/share/pixmaps/kubuntu-logo.png -t 5000;
else  /usr/bin/notify-send "Синхронизация" "<font color=red>НЕУСПЕШНА</font>" -i /usr/share/pixmaps/kubuntu-logo.png -t 5000;
fi

0
dyug - 18 Январь, 2014 - 14:21

эмм, вполне логично.
запуск скрипта из крона не является запуском из сессии пользователя.
для проверки - стоит перейти в консоль по ctrl+alt+f1 залогиниться там, и запустить свой скрипт.
результат будет практически тот же. :-)
надеюсь, что переменные окружения прописываются полностью? :-)

Тем более, нужно не забывать, что крон может работать и тогда, когда пользователь не залогинен.

0
ozim - 18 Январь, 2014 - 14:25

так а если на практике?:) что надо сделать?

0
DarkneSS - 18 Январь, 2014 - 15:06
Изображение пользователя DarkneSS.

Магия дбас, надо как-то посылать в пользовательскую шину.

0
ozim - 18 Январь, 2014 - 15:14

DarkneSS я не шарю в bash) можно как-то более конкретно? на примере

0
MacLeod - 18 Январь, 2014 - 17:42
Изображение пользователя MacLeod.

sudo -u пользователь_под_которым_запущены_иксы /usr/bin/notify-send "лабуда"
Пробовали?
Ну, или пользовательский крон юзать.

0
ozim - 18 Январь, 2014 - 17:43

пробовал. Это даже в консоли ниче не пашет.

0
ozim - 18 Январь, 2014 - 17:50

Ну, или пользовательский крон юзать.
а это что?

+3
MacLeod - 18 Январь, 2014 - 19:55
Изображение пользователя MacLeod.

Значит так. Для этой утилы должна быть прописана переменная DBUS_SESSION_BUS_ADDRESS.
Вот мое решение, как можно ее получить:
для запуска скрипта от пользователя
pid=`pidof plasma-desktop`
sess=`grep -z DBUS_SESSION_BUS_ADDRESS /proc/$pid/environ | sed -e 's/DBUS_SESSION_BUS_ADDRESS=//'`
export DBUS_SESSION_BUS_ADDRESS=$sess
notify-send labuda

или для запуска от рута
pid=`pidof plasma-desktop`
sess=`grep -z DBUS_SESSION_BUS_ADDRESS /proc/$pid/environ | sed -e 's/DBUS_SESSION_BUS_ADDRESS=//'`
sudo -u ozim DBUS_SESSION_BUS_ADDRESS=$sess notify-send labuda

Тестить можно через Ctrl + Alt + F1.

0
ozim - 18 Январь, 2014 - 20:11

Хорошей, умной, и красивой Вам жены, и послушных деток! :)

Отправить комментарий

CAPTCHA на основе изображений
Введите цифры