
Instalé Cygwin con cygrunsrv
Cron para poder aprovechar los beneficios de usar la programación estilo Linux en Windows. quiero llamarnotificode un trabajo cron.
Instalé cron como servicio usando el comando:
cygrunsrv -I cron -d "CYGWIN cron" -u cron_srv -p /usr/sbin/cron -a -n
Todo está bien, el servicio se está ejecutando y no informa ningún error. También le di a este cron_srv
usuario todos los privilegios que necesita, para que pueda cambiar contextos de usuario, etc.
crontab -l
da estos dos trabajos que he definido:
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
da esto:
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")
..así que no hay errores. Y ya tengo mi testcron.txt
archivo creado y completado correctamente con mi prueba de fecha personalizada. Pero notifu
no aparece un globo con mensaje, aunque no informa ningún error cronevents
y parece ejecutarse tan bien como el trabajo de prueba de la fecha de su amigo.
Configuré mi PATH
variable explícitamente para que pueda encontrar el notifu
programa, aunque esté contenido en el último adjunto PATH
, pero quería estar seguro.
La parte interesante es que el notifu
comando se ejecuta sin ningún problema desde la terminal Cygwin, el globo aparece con un mensaje, pero desde el trabajo cron no se activa.
Leí algo sobre la DISPLAY
variable de entorno, ¿podría ser eso quizás un problema? Si es así, ¿cómo establecería su valor en el archivo crontab? En Linux es como DISPLAY=:0.0
, pero no sé cómo configurar este valor en Windows.
EDITAR
Investigando un poco más, llegué a saber que el problema radica en el hecho de que a partir de Windows Vista, los servicios actúan sólo y sólo en session 0 isolation
nivel, por lo que no pueden interactuar con el Escritorio como medida de seguridad, o pueden hacerlo, pero de alguna manera especial. instancia de escritorio seguro.
Me gustaría que alguien me dijera cómo sería posible en este caso (mi caso), que este servicio pueda enviar un mensaje a esa notifu
aplicación, solo que aparezca un globo emergente con ese mensaje, y eso sería posible sin modificar el servicio. en sí, porque no soy el autor del mismo. Entonces, ¿hay alguna manera de que pueda darle algunos logon as
permisos a ese servicio, para que actúe en el espacio de usuario?