【发布时间】:2014-09-06 21:07:02
【问题描述】:
我编写了一个小的 bash 脚本来使用 speedtest-cli 进行宽带速度测试。 脚本运行后,它应该将输出写入 csv 文件。 我测试了脚本,手动调用时一切正常,但是当脚本被 cron 调用时,我无法获得正确的输出,即下载和上传速度。
这是我的 cronjob:
0,30 * * * * speedtest_data/speedtest.sh
这是speedtest.sh的内容:
#!/bin/bash
#echo $(date | cut -d' ' -f5) $(echo ,) $(speedtest-cli --server 4440 | grep -n -e Download -e Upload | cut -d':' -f3 | cut -c1-6)
datetime=$(date +%d/%m/%Y';'%H:%M )
#time=$(date | cut -d' ' -f4)
speeds=$(speedtest-cli --server 4440)
download=$(echo "$speeds" | grep -n Download | cut -d':' -f3 | cut -c2-6)
upload=$(echo "$speeds" | grep -n Upload | cut -d':' -f3 | cut -c2-6)
echo "${datetime};${download};${upload}" >> /home/pi/speedtest_data/speeds.csv 2>> /home/pi/speedtest_data/speeds_err.log
举个例子,这是编写所有内容的输出文件:
06/09/2014;19:25;61.80;20.13
06/09/2014;20:30;;
06/09/2014;21:00;;
06/09/2014;21:30;;
06/09/2014;22:00;;
第一行是手动执行脚本的结果。其余的是 cron 调用。谁能解释一下为什么当通过 cron 调用脚本时,我无法读取下载和上传速度?
【问题讨论】:
-
您可能需要将
speedtest-cli的路径添加到您的 crontab 的 PATH 环境中,或者您可以将其添加到您的脚本中,例如speeds=$(/path/to/speedtest-cli ...)。祝你好运。 -
Tks @shellter,这实际上是问题所在。谢谢。