Não é possível executar um aplicativo GUI a partir do cron

4

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.

    
por evachristine 24.05.2014 / 14:39

3 respostas

1

> 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?

    
por fkraiem 25.05.2014 / 15:30
2

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:

por Wilf 24.05.2014 / 16:10
1

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

    
por intika 18.08.2018 / 12:58