ログに記録する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に追加します。

関連情報