Raspberry Piの温度を記録するスクリプト(logtemps.sh)があります。
TIME1=$(date +%s)
TEMP1=$(</sys/class/thermal/thermal_zone0/temp)
sleep 1s
TIME2=$(date +%s)
TEMP2=$(</sys/class/thermal/thermal_zone0/temp)
sleep 1s
TIME3=$(date +%s)
TEMP3=$(</sys/class/thermal/thermal_zone0/temp)
sleep 1s
echo "$TIME1,$TEMP1"
echo "$TIME2,$TEMP2"
echo "$TIME3,$TEMP3"
ランニングは./logtemps.sh
(例えば)以下を提供します。
1499618156,55843
1499618157,56382
1499618158,55843
これは計画通りに進んでいます。
毎分実行され、temps.txt
.txtを使用してファイルに出力を追加するようにcronjobを設定しました*/2 * * * * /home/pi/temp-cron/logtemps.sh >> /home/pi/temp-cron/temps.txt 2>&1
。
しかし、私が見たときにtemps.txt
それを与える
1499618041,
1499618042,
1499618043,
1499618161,
1499618162,
1499618163,
2番目の変数($ TEMPn)は完全に無視されるようです。
cronjobはインストール用なので、crontab -e
私のユーザー()としてpi
実行する必要があるため、自分で実行しないとどのような違いがあるのかわかりません。
答え1
内容を変数として読み取るlogtemps.sh
ために使用します。これは特徴です$(<file)
file
強く打つしかし、cronはコマンドを実行します。シェン。この問題を解決するには、crontabの行を次のように変更します。
*/2 * * * * bash /home/pi/temp-cron/logtemps.sh >> /home/pi/temp-cron/temps.txt 2>&1
(に追加bash
)
または#!/bin/bash
スクリプトの上部に追加することによって常にbash
。
バラより特典4)#!が導入されたバージョン8 Unixにアップデートされました。
Cronで実行される時間が長すぎるため、sh
スクリプトはbash
常にshebangコマンドのみを使用します。