Disparar mensaje de Cron a X [Solucionado]

He creado un script en BASH que descarga con wget un PDF, el guión es ejecutado cada minuto con cron. Dicha descarga se produce una vez por semana, y cuando finaliza, quiero que se abra un cuadro de diálogo con las opciones sí y no.

Para eso en crontab -e hago esto:

*/1 * * * * /ruta/shell-sh && gdialog --display=:0 --yesno "¿Desea abrir el archivo?" && evince archivo.pdf

También intenté incluir en el script /ruta/shell-sh el siguiente código:

gdialog --display=:0 --yesno "¿Desea abrir el archivo?" && evince archivo.pdf

Quiero aclarar que el guión funciona bien, de hecho cuando lo ejecuto manualmente, se dispara el cuadro de diálogo. Pero no con cron.
Además intenté esto sin cron:

gdialog --display=:0 --yesno "¿Desea abrir el archivo?" && evince archivo.pdf

Y funciona.

Cuando ejecuto echo $DISPLAY me aparece esto: :0

No funciona porque el entorno en el que se ejecuta cron no es el mismo que el de un usuario normal, para más información,

    man 5 crontab

En tu caso has de tener en cuenta lo siguiente,

  • La shell por defecto para cron es sh, puedes cambiarla en tu crontab,
    SHELL="/bin/bash", por ejemplo.
  • Para poder ejecutar aplicaciones XWINDOW necesitas definir las variables de entorno DISPLAY y XAUTHORITY.
xae escribió:

No funciona porque el entorno en el que se ejecuta cron no es el mismo que el de un usuario normal, para más información,

    man 5 crontab

En tu caso has de tener en cuenta lo siguiente,

  • La shell por defecto para cron es sh, puedes cambiarla en tu crontab,
    SHELL="/bin/bash", por ejemplo.
  • Para poder ejecutar aplicaciones XWINDOW necesitas definir las variables de entorno DISPLAY y XAUTHORITY.

Desconocía que tenía que definir las variable DISPLAY.

Me salió así:

DISPLAY=:0 gdialog --yesno "¿Desea abrir el archivo?" && evince archivo.pdf