> Reescrito como resposta por solicitação do OP.
Provavelmente não é uma boa ideia colocar isso no crontab raiz em primeiro lugar. Você já tentou colocá-lo em seu crontab de usuário?
Depois de fazer um "sudo su -" em um notebook Ubuntu 12.04 eu fiz um "crontab -e", adicionei o seguinte:
* * * * * env DISPLAY=:0.0 /usr/bin/gnome-calculator
e esperou por minutos. Nada aconteceu. Eu não tenho monitores externos e se eu executar este comando "env DISPLAY =: 0.0 / usr / bin / gnome-calculadora" no terminal, ele simplesmente funciona. Mas não do cron. Por quê?
O syslog contém apenas isto:
May 24 14:37:01 localhost cron[1227]: (root) RELOAD (crontabs/root)
May 24 14:37:01 localhost CRON[16432]: (root) CMD (env DISPLAY=:0.0 /usr/bin/gnome-calculator )
E eu já tentei um "xhost + localhost".
[root@NOTEBOOK /var/log] xhost
access control enabled, only authorized clients can connect
INET:localhost.localdomain
SI:localuser:USERNAME
[root@NOTEBOOK /var/log]
Portanto, a solução para outra pergunta como esta no askubunut não funcionou.
> Reescrito como resposta por solicitação do OP.
Provavelmente não é uma boa ideia colocar isso no crontab raiz em primeiro lugar. Você já tentou colocá-lo em seu crontab de usuário?
Acho que esta é a questão:
* * * * * env
DISPLAY=:0.0
/usr/bin/gnome-calculator
A definição disso parece funcionar:
* * * * * env DISPLAY=:0 /usr/bin/gnome-calculator
O env DISPLAY=:0
diz para exportar para a exibição :0
- você pode encontrar o seu em TTY
na saída de w
Em seguida, execute crontab -e
como usuário normal onde deseja que o aplicativo seja executado e cole nesta linha:
* * * * * env DISPLAY=:0 /usr/bin/gnome-calculator
Se você não quiser crontab -e
editá-lo usando vim
, execute isso antes para usar nano
:
export EDITOR=nano ; export VISUAL=nano
Observe que os asteriscos significam que ele será executado a cada minuto, a cada hora e a cada dia, portanto, ele provavelmente ficará muito chato, a menos que você o remova.
Se ainda assim não funcionar, tente executar este comando:
sudo bash -c "echo $(whoami) > /etc/cron.allow"
E, se você não quiser se preocupar com arquivos de texto, use gnome-schedule
em vez disso.
Referências:
Cron em execução no root não tem acesso para exibir se o usuário x atual não for root.
Nós só precisamos adicionar o usuário root ao x, você pode fazê-lo no momento do login com um script de inicialização
xhost local:root
Para fins de teste, podemos apenas executar o comando sob o usuário atual e relançar a tarefa cron do cronograma