Xdotool usando “DISPLAY =: 0” não funciona no Crontab

2

Eu preciso executar o shell script contém códigos Xdotool em /home/z/Desktop/tempo/run.sh . Eu tentei muitas maneiras de DISPLAY=:0 mas sempre não funciona.

Eu tentei cada um dos códigos abaixo e não funciona:

* * * * * export DISPLAY=:0 cd /home/z/Desktop/tempo; ./run.sh
* * * * * export DISPLAY=:0; cd /home/z/Desktop/tempo; ./run.sh
* * * * * export DISPLAY=:0 && cd /home/z/Desktop/tempo; ./run.sh
* * * * * DISPLAY=:0 cd /home/z/Desktop/tempo; ./run.sh
* * * * * DISPLAY=:0; cd /home/z/Desktop/tempo; ./run.sh
* * * * * DISPLAY=:0 && cd /home/z/Desktop/tempo; ./run.sh

A execução direta também não funciona:

* * * * * export DISPLAY=:0 xdotool mousemove 20 20
* * * * * export DISPLAY=:0; xdotool mousemove 20 20
* * * * * export DISPLAY=:0 && xdotool mousemove 20 20
* * * * * DISPLAY=:0 xdotool mousemove 20 20
* * * * * DISPLAY=:0; xdotool mousemove 20 20
* * * * * DISPLAY=:0 && xdotool mousemove 20 20

Eu sempre não vejo meu mouse se movendo em cada linha de código acima.

Também testei códigos Xdotool para fazer uma solicitação de URI de website inválida e ver os registros. Infelizmente, os logs ainda estão em branco.

    
por apasajja 15.03.2013 / 13:58

2 respostas

3
 * * * * * DISPLAY=:0 xdotool mousemove 20 20

Pelo menos, deve funcionar contanto que esteja no crontab do mesmo usuário daquele que tiver a sessão X na tela correspondente.

Se outro usuário quiser fazer o mousemove, você precisa conceder a ele acesso ao seu monitor. Isto pode ser feito dando-lhe o MIT Magick Cookie para o seu monitor e deixe-o instalá-lo em seu próprio repositório X auth (usando xauth ), ou pode ser feito com:

xhost +si:localuser:the-user

Ou isso pode ser feito concedendo-lhe acesso à sua própria loja X auth, por exemplo, fazendo:

setfacl -m u:the-user:r ~/.Xauthority

E altere a linha do crontab para:

* * * * * DISPLAY=:0 XAUTHORITY=~me/.Xauthority xdotool...

Se esse outro usuário for root, você não precisará da etapa setfacl , mas eu não executaria o xdotool como root , não há motivo para isso. Você pode executá-lo como seu próprio usuário.

    
por 15.03.2013 / 14:59
1

cron jobs nem têm um tty, muito menos um display X.

Se você quiser testar as entradas de reprodução da GUI (ou gerar carga sintética), procure por isso. Não tente usar o cron.

    
por 15.03.2013 / 14:37