在 Cygwin 上运行 cron 来调用 notifu

在 Cygwin 上运行 cron 来调用 notifu

我已经安装了 Cygwin 和cygrunsrvCron,这样我就可以利用在 Windows 中使用 Linux 样式调度的好处。我想调用诺蒂富来自 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权限,以便它在用户空间中运行。

相关内容