Cron não executa um dos trabalhos agendados

0

Estou usando um desktop lubuntu, distribuição Ubuntu 13.10, i686. Esse é meu problema: na lista de trabalhos agendada pelo cron uma tarefa não tem efeito, mas em / var / log / syslog sua execução é rastreada. Esta é a linha de registro relativa:

Jun 4 09:06:01 quiosque CRON [14189]: (raiz) CMD (/ usr / bin / xinput set-prop 12 --type = flutuante "Matriz de Transformação de Coordenadas" 0 -1 1 1 0 0 0 0 1 > > /tmp/mybackup.log)

Esse trabalho deve girar o mapeamento da tela sensível ao toque.

Eu tento diferentes soluções: Eu substituo em crontab o com bash -c "", eu defino "export DISPLAY =: 0.0" ("para trabalhos relacionados a Graphics no Unix Environment precisamos definir primeiro o DISPLAY ...") antes do comando, ... e muitos outros!

Eu sei que há muitos detalhes que afetam a execução do cron (caminho, variáveis de ambiente, caractere especial e outros) e eu não tenho mais ideia agora: (

Algum cavalheiro pode me sugerir uma ideia? Onde posso encontrar o problema? Obrigado antecipadamente!

    
por manmando 05.06.2014 / 10:06

2 respostas

0

xinput configura e testa os dispositivos de entrada X. Ele usa a variável de ambiente $DISPLAY para encontrar o servidor X com o qual conversar, portanto, é necessário defini-lo, porque as tarefas agendadas não requerem X windows. O jeito fácil é ter a linha crontab

env DISPLAY=:0.0 /usr/bin/xinput set-prop 12 --type=float "Coordinate Transformation Matrix" 0 -1 1 1 0 0 0 0 1 >> /tmp/mybackup.log  

Existe um servidor X em execução quando o cronjob é executado? Além disso, se houver um servidor X em execução, ele poderá estar em execução com as credenciais de autenticação X de um usuário, e seu log do cron mostrará sua execução como root . Se você não está exposto e está disposto a arriscar a reduzir sua segurança X, tente executar

xhost +SI:localhost:root  

no seu servidor X em cada login. Ou execute a tarefa cron como o mesmo usuário, não root .

    
por waltinator 07.06.2014 / 21:46
0

Isso deve ser um comentário, mas não consegui formatar o comentário da maneira que gostei.

Compare o ambiente cron com o ambiente de trabalho, assim:

$ env | sort >x.environment  
$ crontab -l  
# m h  dom mon dow   command  
*   *  *   *   *     env | sort >cron.environment  
$ sleep 60  
$ ls -l {cron,x}.environment  
-rw-rw-r-- 1 walt walt  112 Jun  8 19:40 cron.environment  
-rw-rw-r-- 1 walt walt 4216 Jun  8 19:38 x.environment  
$ diff {cron,x}.environment  
.......<snip, YMMV>.......  
    
por waltinator 10.06.2014 / 17:14