
Instalei o Cygwin cygrunsrv
e o Cron para poder aproveitar os benefícios do agendamento no estilo Linux no Windows. eu quero ligarnotificarde um cron job.
Instalei o cron como um serviço usando o comando:
cygrunsrv -I cron -d "CYGWIN cron" -u cron_srv -p /usr/sbin/cron -a -n
Está tudo bem, o serviço está rodando e não reportando nenhum erro. Também dei a esse cron_srv
usuário todos os privilégios necessários, para que ele possa alternar entre contextos de usuário, etc.
crontab -l
dá estes dois trabalhos que defini:
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
dá isso:
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")
..então sem erros. E eu criei meu testcron.txt
arquivo e o preenchai corretamente com meu teste de data personalizado. Mas notifu
não aparece um balão com mensagem, embora não relate nenhum erro cronevents
e parece ser executado tão bem quanto seu trabalho de teste de encontro de amigo.
Defino minha PATH
variável explicitamente para que ela possa encontrar o notifu
programa, mesmo que esteja contido no último anexo PATH
, mas queria ter certeza.
O interessante é que o notifu
comando roda sem problemas no terminal Cygwin, o balão está estourando com a mensagem tudo bem, mas no cron job não está acionando.
Eu li algo sobre a DISPLAY
variável de ambiente, isso poderia ser um problema, talvez? Se sim, como eu definiria seu valor no arquivo crontab? No Linux é parecido DISPLAY=:0.0
, mas não sei como definir esse valor no Windows.
EDITAR
Fazendo mais algumas pesquisas, descobri que o problema está no fato de que a partir do Windows Vista, os serviços atuam apenas e somente em session 0 isolation
nível, portanto não podem interagir com o Desktop por precaução de segurança, ou podem, mas de alguma forma especial de instância de desktop segura.
Gostaria que alguém me dissesse como seria possível neste caso (meu caso), que este serviço pudesse enviar mensagem para aquele notifu
aplicativo, apenas para aparecer a dica do balão com aquela mensagem, e isso seria possível sem modificar o serviço em si, porque não sou seu autor. Existe alguma maneira de conceder algumas logon as
permissões a esse serviço, para que ele atue no espaço do usuário.