cronジョブが実行されていません - rootが正常に実行されています

cronジョブが実行されていません - rootが正常に実行されています

作成したスクリプトがあり、ルートで正しく実行されます。クローンジョブを追加しましたが、正しく実行されません。

コマンドは次のとおりです。

gpio -g mode 17 input
getval="$(gpio read 17)"
todayis=$(date) 
getstatus=$getval 
if [ "$getstatus" = "0"  ]; then 
power="Power ON"
else
power="Power OFF"
echo $todayis $power $getstatus >> /var/www/turnmeon.log

ルートとして実行したときのログファイル:

Wed Nov 8 21:11:41 UTC 2017 Power ON 0

crontabで実行したときのログファイル:

Wed Nov 8 21:11:41 UTC 2017 Power OFF

OFFが実際に真であれば、予想したように最後に1がありません。

crontabジョブの代わりにbashプロンプトで実行されるのはなぜですか?

*/2 * * * * bash /myscript.sh

答え1

権限の問題のようです。おそらくデスクトップユーザーとしてcrontabを編集しているでしょう。これは、ジョブがデスクトップユーザーとして実行されることを意味します。ジョブにrootが必要な場合は、rootでcrontabを編集する必要があります。

答え2

考えられる理由は、cronに使用できるものgpioがないからです。PATHたとえば、gpio コマンドへのフルパスを指定します。

getval="$(/sbin/gpio read 17)"

システムはそのファイルがどこにあるかを調べるために使用しますwhich gpio

私は組み込みソリューションを頻繁に修正しているので、以前はこの問題で苦労しました。スクリプトがより複雑な場合は、通常は作業を簡単にするために、最初にPATHとLD_LIBRARY_PATHを初期化します。

関連情報