아래와 같이 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,
두 번째 변수($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 명령만 사용합니다.