問題の原因となる可能性のある背景は次のとおりです。私はOrange Pi ZeroでArmbian Legacy Jessieを実行しています。デスクトップは含まれていないので、X、lightdm、Xfceをインストールしました。起動時にXを起動できなかったため、crontabに次のスクリプトを実行する@reboot行があります。
#!/bin/bash
while ! ping -c 1 -W 1 192.168.1.100; do
sleep 1
done
/usr/bin/startx
すべてが完璧に動作します(自動ログインを有効にして1:0でMumbleクライアントを起動しました)。その後、私のGPIO(話すボタンを押す)を監視し、ボタンを押すと「Ctrl + 1」を送信するPythonスクリプトがあります。 Mumbleはグループの話を聞いていて、押すと放送が始まります。
GPIOにアクセスするには、ルートとしてPythonスクリプトを実行する必要があるため、/etc/profile
ルートがXにアクセスできるように次の行を追加しました。
export DISPLAY=:1.0
export XAUTHORITY=/home/icuser/.Xauthority
私が言ったように、sudoで実行すると完璧に動作します。
sudo python /home/icuser/sendptt_zero.py
しかし、(crontabの@reboot)を使用してスクリプトを実行すると、次のようになります。
sudo /usr/bin/python /home/icuser/sendptt_zero.py >> /home/hallgren/ic.log 2>&1 &
ic.logファイルからこの内容を取得します(gpioボタンを押すと、Pythonでシミュレートされたキーボードキー機能が起動します(私は次を使用しています))。http://www.autopy.org/)):
No protocol specified
Could not open main display
私のPythonスクリプトにも次の行があります(この行がないと機能しません)。
os.environ['DISPLAY'] = ':1.0'
Xを自動的に起動する方法とsudoを介してコマンドラインで動作しますが、crontabで起動すると機能しない理由についてのアイデアはありますか?
答え1
クローナは使用されません/etc/profile
。
ファイルの先頭に変数を書き込みますcrontab
。