Я установил Cygwin с cygrunsrv
и Cron, чтобы использовать преимущества планирования в стиле Linux в Windows. Я хочу вызвать notifu из cron.
Я установил cron как сервис, используя команду:
cygrunsrv -I cron -d "CYGWIN cron" -u cron_srv -p /usr/sbin/cron -a -n
Все в порядке, служба работает и не сообщает об ошибках. Также я дал этому пользователю cron_srv
все необходимые ему привилегии, чтобы он мог переключать контексты пользователя и т.д.
crontab -l
дает эти две работы, которые я определил:
HOME=/home/<username>
PATH=/usr/local/bin:/usr/bin:/bin:/cygdrive/c/utils/notifu:$PATH
# testing
* * * * * echo "Cron test at $(date +\%k:\%M)" >> ~/testcron.txt 2>&1
* * * * * notifu /p "Balloon Title" /t warn /w /m "event description"
cronevents
дает это:
2014/03/03 13:08:01 [cron_srv] /usr/sbin/cron: PID 2592: (branchito) CMD (echo "Cron test at $(date +%k:%M)" >> ~/testcron.txt 2>&1)
2014/03/03 13:08:01 [cron_srv] /usr/sbin/cron: PID 4076: (branchito) CMD (notifu /p "Balloon Title" /t warn /w /m "event description")
..так никаких ошибок И у меня есть файл testcron.txt
созданный и правильно заполненный моим пользовательским тестом даты. Но notifu
не выдает всплывающее сообщение с сообщением, хотя оно не сообщает об ошибке в cronevents
и, похоже, выполняется так же, как и его тестовое задание на свидание с другом.
Я установил свою PATH
явно, чтобы она могла найти программу notifu
, даже если она содержится в последнем добавленном PATH
, но я хотел быть уверенным.
Интересно то, что команда notifu
запускается без проблем с терминала Cygwin, воздушный шар всплывает с сообщением все хорошо, но из задания cron он не срабатывает.
Я прочитал кое-что о переменной окружения DISPLAY
, может ли это быть проблемой? Если это так, как бы я установить его значение в файле crontab? В Linux это похоже на DISPLAY=:0.0
, но я не знаю, как установить это значение в Windows.
РЕДАКТИРОВАТЬ
Проведя дополнительные исследования, я узнал, что проблема заключается в том, что в Windows Vista службы действуют только и только на уровне session 0 isolation
, поэтому они не могут взаимодействовать с рабочим столом в качестве меры безопасности, или они могут, но в некоторых случаях особый способ безопасного рабочего стола.
Я хотел бы, чтобы кто-то рассказал мне, как в этом случае (в моем случае) это возможно, чтобы эта служба могла отправлять сообщения в это приложение notifu
, просто чтобы всплывающая подсказка всплывала с этим сообщением, и это было бы возможно без изменения Сам сервис, потому что я не являюсь его автором. Так есть ли какой-нибудь способ, которым я мог бы дать этому сервису logon as
разрешений, чтобы он действовал в пространстве пользователя.