我正在使用一个脚本来测试宽带速度,我想设置一个 cronjob 来每 n 分钟测试一次并输出到文件。从 shell 控制台启动它并附加到日志文件并在前面加上当前日期的命令是
tespeed.py -w | sed -e "s/^/$(date +\"%d-%m-%y\ %T\"), /" >>tespeedlog.csv
但是如果我在 cronjob 中使用这个命令,有些东西就不起作用了;系统日志报告:
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。