2017-10-02 15 views
0

上でユーザーが実行した場合、raspbianストレッチはliteの9.1をリリースする権限拒否を返された - カーネルバージョン4.9.52+GPIOスクリプトはラズベリーパイ1でGPIOグループラズベリーパイ

私はラズベリーを経由して主導を点灯するシェルプログラムを作りましたpiのgpio(ファイル名はled.shです)。

function makeOn { 
    # status has value 1 if led is on and 0 if led is off 
    if [ $(status) -eq 1 ]; then 
    echo "led is already on" 
    else 
    #say we are using pin 18 and set it to output mode 
    echo "18" > /sys/class/gpio/export 
    echo "out" > /sys/class/gpio/gpio18/direction # this is line 38 

    # write output 
    echo "1" > /sys/class/gpio/gpio18/value # this is line 41 
    echo "led is on" 
    fi 
} 

私はgpioグループのユーザーとしてこれを実行しています。これらは、私は私のプログラムでを台無しにしようとしていますファイルです:

enter image description here

enter image description here

これは私がled.shを実行したときに何が起こるかです:

enter image description here

奇妙問題は、私はシェルでこれらのコマンドを1つずつ実行しても問題ありません。しかし、私はそれらを呼び出すスクリプトを実行すると、私はgpioグループにいるにもかかわらず、許可が拒否されます。最初に、シェルがコマンドを特別なユーザーとして実行し、echo $ EUIDをled.shにいくつかの場所で追加してチェックし、すべてが自分のユーザーIDを返したと考えました。

なぜこのプログラムはこれらのファイルに対する許可が拒否されていますか、どのように許可しますか/これを修正しますか?

+0

スクリプトに実行可能ファイルをマークしましたか?つまり、 'chmod + x led.sh'が役に立ちます。これで解決したら、毎日尋ねられるようにこのQを削除してください。がんばろう。 – shellter

+0

@shellterそれは問題ではありません、コメントいただきありがとうございます。 – secknv

答えて

0

だから私はいくつかの実験を行なったし、ここで私が得たものです:

最初は、私はちょうどテストのために問題のあるファイルにはchmod 777のようなものをやっについて考え、その後、私はそれらのファイルがあるので、それが動作しません思い出しましたピンをecho "18" > /sys/class/gpio/exportにエクスポートすると作成されます。

私はそれが問題の可能性があると思ったので、システムに「ファイルの許可を適切に作成して設定する」時間があるようにしてからsleep 0.1を追加しました。それは今働く。

0

の直後にsleepを追加するとどうなりますか?

echo "18" > /sys/class/gpio/export 
sleep 0.1 

タイミングの問題と思われます。

関連する問題