2

I'm using a script for testing broadband speed and I would like to set up a cronjob for testing every n minutes and output to a file. The command to launch it from a shell console and append to logfile prepending a line with the current date is

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

But if I use this command in a cronjob something doesn't work; the syslog reports:

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

What shoud I check?

2
  • 1
    You need to escape the % characters with backslashes, see your crontab(5) man page for details. Commented Sep 25, 2013 at 12:00
  • Related: unix.stackexchange.com/questions/207/… Commented Sep 25, 2013 at 21:49

1 Answer 1

4

Create a wrapper script as there may be a problem with escaping date format. The problem seems to be with % character which may be interpreted as a new line specifier in some cron schedulers:

Put this to the file /usr/local/bin/wrpr.sh:

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

Make it executable:

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

And schedule it with cron (this will override the current user's crontab):

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

Otherwise, use crontab -e to add it to the current user's crontab.

1
  • @alzambo if it works, please accept this answer, that's the way to say thanks on the stack exchange sites. Commented Sep 25, 2013 at 14:43

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.