
Я установил Cygwin с cygrunsrv
Cron, чтобы использовать преимущества использования планирования в стиле Linux в Windows. Я хочу позвонитьуведомлениеиз задания 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
разрешения, чтобы она действовала в пользовательском пространстве.