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.
Atualiza START
export DISPLAY=:0 && <my GUI dependent command here>
Esperando por ele para postar a resposta aqui. /opt/google/chrome/chrome PARTICULAR_GOOGLE_DOC_URL &
sem o &
também. Ainda falha. Ter sucesso diretamente na linha de comando. /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 &
cat /tmp/crontest
, vejo timestamps adicionados para cada segundo minuto /opt/google/chrome/chrome PARTICULAR_GOOGLE_DOC_URL
no shell, ele funcionará como esperado 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.
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.
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.
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.