Cron funciona, mas o trabalho agendado para abrir a página da Web no chrome não

4

Atualiza START

  1. Um amigo meu acabou de responder isso. Eu preciso fazer isso export DISPLAY=:0 && <my GUI dependent command here> Esperando por ele para postar a resposta aqui.
  2. Eu tentei /opt/google/chrome/chrome PARTICULAR_GOOGLE_DOC_URL & sem o & também. Ainda falha. Ter sucesso diretamente na linha de comando.
  3. Não há arquivo /var/log/cron na minha máquina. Pergunta subsidiária: Como posso obtê-lo?

Atualizações END

Eu tenho um Documento Google que preciso atualizar em intervalos regulares várias vezes ao dia. O conteúdo que formaria uma atualização específica não pode ser previsto ou determinado programaticamente. Assim, a melhor solução que tenho é que a página específica do Google Doc abra automaticamente em intervalos fixos e, em seguida, adiciono manualmente os dados a ela.

Agora, o problema é que o que funciona diretamente na linha de comando não funciona quando usado no crontab. Abaixo está o que eu tentei (usando 2mins de intervalo apenas para testes) -

*/2 * * * * date >> /tmp/crontest
*/2 * * * * /opt/google/chrome/chrome PARTICULAR_GOOGLE_DOC_URL &
  1. Se eu cat /tmp/crontest , vejo timestamps adicionados para cada segundo minuto
  2. Se eu tentar o /opt/google/chrome/chrome PARTICULAR_GOOGLE_DOC_URL no shell, ele funcionará como esperado
  3. Mas PARTICULAR_GOOGLE_DOC_URL não é aberto no meu cromo a cada 2 minutos, como deveria. (novamente: estou usando o intervalo de 2 minutos apenas para testes)

O que estou fazendo de errado? Como devo consertar isso? Alguma maneira alternativa de conseguir o que eu preciso fazer?

Obrigado antecipadamente.

    
por Sumeet Pareek 10.01.2013 / 11:35

3 respostas

7

Edite o crontab com export DISPLAY wrapper:

2 * * * * export DISPLAY=:0 && firefox %u

Isso abre uma guia vazia do Firefox, você pode usar seu URL favorito.

    
por Vishal Vashista 10.01.2013 / 12:23
4

cron destina-se a tarefas de linha de comando e executa comandos com um conjunto muito limitado de variáveis de ambiente - apenas HOME , LOGNAME , PATH e SHELL .

No mínimo, chrome exigirá que DISPLAY seja definido. Também pode ser infeliz sem outras variáveis (por exemplo, DBUS relacionadas). Execute env em um terminal para ver seu ambiente atual.

    
por chronitis 10.01.2013 / 11:54
3

O ambiente que você recebe para um cronjob é muito limitado. Por exemplo, você não obtém a variável DISPLAY que é necessária para abrir o cromo.

Quebra seu comando em um script

#!/bin/sh
export DISPLAY=:0
/opt/google/chrome/chrome PARTICULAR_GOOGLE_DOC_URL

Não tenho certeza se você precisa de mais variáveis para que funcione. Fiz um script semelhante que iniciou konsole (terminal no KDE) que funcionava no cron.

    
por McNisse 10.01.2013 / 12:01