¿Cómo iniciar una aplicación GUI desde cron?

18

Necesito ejecutar un applet de Java desde Firefox. El problema es que necesito ejecutar este Firefox desde un cron. Si ejecuto desde la línea de comandos y funciona bien, pero cuando puse el comando en el cron falló:

*/1 * * * * firefox http://domain.com/iqms/packetloss/iqmspacket2.html
fadabi Nawi
fuente
1
Puede usar la biblioteca java de Selenium si necesita más funciones que solo abrirla.
Övünç Metin
También puede usar Selenium con python, que es más fácil para los scripts.
ESala

Respuestas:

25

Cron se ejecuta en un entorno que no sabe nada sobre el administrador de pantalla ( $DISPLAYno está configurado). Su ventana de terminal en la que ha estado probando tiene esto configurado. Si lo intentaste en una terminal "real", o sobre SSH, verías que se rompe.

Si solo tiene un servidor X ejecutándose, solo especificar la pantalla podría funcionar:

* * * * *    DISPLAY=:0 firefox ...

Probablemente podría esforzarse más para determinar en qué pantalla se encuentra en lugar de asumir que es, :0pero eso probablemente funcionará la mayor parte del tiempo.

Si solo necesita volver a cargar algo mucho, mire Tab Auto Reload o complementos similares de Firefox.

Oli
fuente
Encontré esta respuesta pero aún no inicia Firefox. Después de algunas búsquedas, descubrí que necesito ejecutarme como un usuario válido desde la raíz. * * * * * "DISPLAY =: 0.0 / usr / bin / firefox -new -window x.com/iqms/packetloss/iqmspacket2.html "
fadabi Nawi
1
@fadabiNawi Una forma más fácil de administrar eso sería instalar la línea cron en el crontab del usuario correcto. Inicie sesión como desee ycrontab -e
Oli
7

Encontré esta respuesta que estoy buscando además de oli's:

Después de algunas búsquedas, descubrí que necesito ejecutarme como un usuario válido desde la raíz.

* * * * * su fadabi -c "DISPLAY=:0.0 /usr/bin/firefox -new-window x.com/iqms/packetloss/iqmspacket2.html"; 

tq

fadabi Nawi
fuente
Esto ayudó, muchas gracias! Solo una nota: la ruta completa a Firefox es obligatoria, no me di cuenta de eso y no funcionó
ejemplo, el