Como iniciar um aplicativo GUI a partir do cron?

18

Eu preciso executar um applet Java a partir de um Firefox. O problema é que eu preciso executar este Firefox a partir de um cron. Se eu executar a partir da linha de comando e seu trabalho estiver bom, mas quando colocar o comando no cron, ele falhará:

*/1 * * * * firefox http://domain.com/iqms/packetloss/iqmspacket2.html
fadabi Nawi
fonte
11
Você pode usar a biblioteca java do Selenium se precisar de mais funções do que apenas abri-la.
Övünç Metin
Você também pode usar o Selenium com python, o que é mais fácil para scripts.
ESala #

Respostas:

25

Cron é executado em um ambiente que não sabe nada sobre o gerenciador de exibição ( $DISPLAYnão está definido). Sua janela do terminal em que você está testando possui esse conjunto para isso. Se você o experimentasse em um terminal "real" ou através de SSH, você o veria quebrar.

Se você tiver apenas um servidor X em execução, basta especificar a exibição:

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

Você provavelmente poderia se esforçar mais para descobrir qual é a tela em que está, em vez de supor que está, :0mas que provavelmente funcionará na maioria das vezes.

Se você só precisa recarregar muito, consulte Tab Auto Reload ou plugins semelhantes do Firefox.

Oli
fonte
Encontrei esta resposta, mas ainda não inicia o firefox. Depois de algumas pesquisas, descobri que preciso executar como um usuário válido em vez de raiz. * * * * * "DISPLAY =: 0.0 / usr / bin / firefox -new -window x.com/iqms/packetloss/iqmspacket2.html "
fadabi Nawi
11
@fadabiNawi Uma maneira mais fácil de gerenciar isso seria instalar a linha cron no crontab do usuário correto. Entre como quem você quiser ecrontab -e
Oli
7

Encontrei esta resposta que estou procurando além do oli:

Depois de algumas pesquisas, descobri que preciso executar como um usuário válido em vez de raiz.

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

tq

fadabi Nawi
fonte
Isso ajudou, muito obrigado! Apenas uma nota: caminho completo para o Firefox é obrigatório, eu não percebi isso e não funcionou
aexl