Cron 没有正确附加到文件

Cron 没有正确附加到文件

我有一个脚本(logtemps.sh)来记录我的Raspberry Pi的温度,如下所示

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

这是按计划进行的。

我设置了一个 cronjob 每隔一分钟运行一次,并temps.txt使用 .txt 将输出附加到文件中*/2 * * * * /home/pi/temp-cron/logtemps.sh >> /home/pi/temp-cron/temps.txt 2>&1

然而,当我看到temps.txt它给出

1499618041,
1499618042,
1499618043,
1499618161,
1499618162,
1499618163,

第二个变量($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。

相关内容