로그할 Cronjob 출력

로그할 Cronjob 출력

광대역 속도를 테스트하기 위해 스크립트를 사용하고 있으며 n분마다 테스트하고 파일로 출력하도록 cronjob을 설정하고 싶습니다. 쉘 콘솔에서 시작하고 현재 날짜가 앞에 붙은 로그 파일에 추가하는 명령은 다음과 같습니다.

tespeed.py -w | sed -e "s/^/$(date +\"%d-%m-%y\ %T\"), /" >>tespeedlog.csv

그러나 cronjob에서 이 명령을 사용하면 syslog에서 다음과 같은 내용이 보고됩니다.

Sep 25 13:23:01 raspberrypi /USR/SBIN/CRON[6719]: (pi) CMD (/home/pi/tespeed/tespeed.py -w | sed -e "s/^/$(date +')

무엇을 확인해야 합니까?

답변1

날짜 형식을 이스케이프하는 데 문제가 있을 수 있으므로 래퍼 스크립트를 만듭니다. 문제는 %일부 cron 스케줄러에서 개행 지정자로 해석될 수 있는 문자인 것 같습니다.

파일에 넣으십시오 /usr/local/bin/wrpr.sh.

#!/bin/sh
tespeed.py -w | sed -e "s/^/$(date +\"%d-%m-%y\ %T\"), /" >> /tmp/tespeedlog.csv

실행 가능하게 만드세요:

chmod u+x /usr/local/bin/wrpr.sh

cron을 사용하여 예약합니다(현재 사용자의 crontab을 덮어씁니다).

echo "* * * * * /usr/local/bin/wrpr.sh" | crontab

그렇지 않으면 crontab -e현재 사용자의 crontab에 추가합니다.

관련 정보