Cron não usa /etc/profile
.
Escreva as variáveis no topo do seu arquivo crontab
.
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?