Por que não consigo executar aplicativos GUI com o sudo do crontab quando consigo com o sudo: “No protocol specified”? [duplicado]

0

um pouco de fundo, pois pode ser a causa do problema. Estou executando o legado do Armbian Jessie em um Orange Pi Zero. Não inclui um ambiente de trabalho, por isso instalei o X, o lightdm e o xfce. Eu não consegui iniciar o X no boot, então eu tenho uma linha @ reboot no crontab que executa um script que inclui isso:

#!/bin/bash
while ! ping -c 1 -W 1 192.168.1.100; do
    sleep 1
done
/usr/bin/startx

tudo funciona perfeitamente (eu tenho o autologin ativado e ele inicia o cliente Mumble em 1: 0). Eu então tenho um script python que monitora o meu GPIO (um botão de apertar para falar) e enviar "CTRL + 1" se o botão for pressionado. Mumble está ouvindo essa combinação e começa a transmitir quando ela é pressionada.

Eu devo executar meu script python como root para poder acessar o GPIO, então adicionei essas linhas ao / etc / profile (para que o root possa acessar o X):

export DISPLAY=:1.0
export XAUTHORITY=/home/icuser/.Xauthority

Como dito, isso funciona perfeitamente quando executado com o sudo:

sudo python /home/icuser/sendptt_zero.py

mas quando executo meu script com (@reboot no crontab):

sudo /usr/bin/python /home/icuser/sendptt_zero.py >> /home/hallgren/ic.log 2>&1 &

Eu recebo isso no meu arquivo ic.log (quando pressiono o botão do gpio que inicia a função de chave de emulação do teclado em python (estou usando link )):

No protocol specified
Could not open main display

Meu script python também tem essa linha (não funciona sem ele):

os.environ['DISPLAY'] = ':1.0'

Alguma idéia de como fazer com que ele inicie o X automaticamente e por que ele funciona a partir da linha de comando com o sudo, mas não quando iniciado a partir do crontab?

    
por nickehallgren 28.11.2016 / 11:02

1 resposta

1

Cron não usa /etc/profile .

Escreva as variáveis no topo do seu arquivo crontab .

    
por 28.11.2016 / 11:04