sudo:「指定されたプロトコルなし」を使用できますが、sudoを使用してcrontabでGUIアプリケーションを実行できないのはなぜですか? [コピー]

sudo:「指定されたプロトコルなし」を使用できますが、sudoを使用してcrontabでGUIアプリケーションを実行できないのはなぜですか? [コピー]

問題の原因となる可能性のある背景は次のとおりです。私は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

関連情報