Iniciando o aplicativo X11 (Firefox) via crontab

0

Eu quero escrever um crontab que abra o Firefox a cada minuto (só para testá-lo, sei que não faz sentido). Meu problema é que, mesmo que o crontab esteja ativo, nada acontece. É assim que meu crontab se parece:

SHELL=/bin/bash
PATH=~/bin:/usr/bin:bin
* * * * * export DISPLAY=:0.0 xhost localuser /usr/bin/firefox

Alguma ideia de por que não está funcionando?

    
por KeykoYume 05.11.2015 / 12:42

1 resposta

3

export DISPLAY=:0.0 xhost localuser /usr/bin/firefox

Só de observar o comando cron acima, posso ver por que ele não funciona. O uso para o comando export é

export name[=word]...

Em shells POSIX, o resto das palavras que seguem export DISPLAY=:0.0 serão tratadas como outras variáveis do shell que devem ser exportadas para o ambiente - não comandos que serão executados. O POSIX (edição 7, 2018) também especifica que um nome deve ser

a word consisting solely of underscores, digits, and alphabetics from the portable character set.

Isso significa que os nomes das variáveis de shell não podem conter caracteres como / , portanto, incluir /usr/bin/firefox na lista de nomes de variáveis a serem exportados geraria um erro com uma mensagem como not a valid identifier ou bad variable name .

Além disso, o comando xhost é usado incorretamente. Execute xhost para ver se você precisa adicionar sua conta de usuário como um usuário permitido. Isso só precisa ser executado uma vez e não deve ser agendado pelo cron.

A menos que haja algum outro mecanismo que impeça os programas de se conectarem ao servidor de exibição X, as linhas acima podem ser substituídas simplesmente por:

DISPLAY=:0.0
* * * * * /usr/bin/firefox

Isso deve lançar uma nova janela do Firefox a cada minuto. Também não há necessidade de especifique a variável de ambiente SHELL e, como você está especificando o caminho completo para o executável firefox , também não é necessário definir a variável PATH .

Veja também: especificação POSIX para export

    
por 09.06.2016 / 14:23