2

ラズベリーパイを持っています。コマンドラインを介してボード上のパイロットGPIO用のWiringPiをインストールしました。

aggiornaora.shというスクリプトを実行しました

gpio -g write 18 1 #it set the GPIO port to 1
#log with reverse append
(echo 'accensione';date;echo ' ') | cat - logstufa.txt > temp && mv temp logstufa.txt

このスクリプトは、を介して直接実行しようとすると正常に機能しsh aggiornaora.shます。ただし、cronがスクリプトを実行すると、2番目のアクションのみが実行されます。すべてroot権限があります。「gpioreadall」でこの問題を確認しました。

あなたの意見では、何が問題になる可能性がありますか?

4

2 に答える 2

7

から何かを実行する場合crontab、必ずしも同じ環境変数が設定されているとは限らないことに注意してください。

最も重要な環境。あなたのための変数はですPATHcronPATHの下には、gpioコマンドが配置されているディレクトリが含まれていないと思います。

crontabの最初の行として次のような行を追加できます。

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin

gpio上記のディレクトリのいずれかにある場合は、これで問題が解決するはずです。

crontabの問題をデバッグする一般的な方法は、そのenvを確認することです。変数はあなたが期待するものです。デバッグするスクリプトの最初の行に次のような行を追加します。

set > /path/to/log/file    # be sure that this file is writable

手動で1回実行し、ログファイルを脇にコピーします。次に、cronから再度実行し、出力を比較します。何が違うのかがわかります。

于 2013-01-13T21:22:58.613 に答える
1

はい、同じ問題が発生しました(crontabでgpioコマンドを使用)。私のために働いた簡単な修正は、次のようなgpioコマンドの前に「sudo」を追加することでした:sudo gpio write 0 1

bashスクリプトを実行し、すべてのgpioコマンドに「sudo」を追加すると、すべてが正常に機能します。

mvpによって提案された以前の答えは、crontabでこれらのタイプの問題を修正するための「より良い」方法です。お役に立てれば

于 2014-11-20T18:54:39.130 に答える