我想要自动化 speedtest.net 并每 5 分钟测试一次我与特定服务器 ID 36250 的网络连接。
我已经安装了官方 speedtestCLI 并编写了一个名为运行速度测试
#!/bin/bash
date_now=`date "+%H:%M:%S %d/%m/%y"`
result=/home/zaz/speedtesty/results
speedtest -s 36250 >> result
echo "$date_now" >> result
现在为了自动化操作我使用命令编辑了我的 crontab 文件:sudo crontab-e它看起来像这样:
*/5 * * * * /bin/bash /home/zaz/speedtesty/run_speedtest.sh
结果文件已创建,但只有我的输出结果文件是包含当前日期的行。如果我通过键入 bash run_speedtest.sh 来运行脚本,我会得到输出结果我想要的(速度测试测量 + 日期)
我是 Ubuntu 新手,有人可以帮帮我吗?
答案1
如果通过运行计划任务,脚本运行时的权限(使用不同的用户帐户)与从 shell 运行脚本时不同。因此,它可能会也可能不会找到您的速度测试命令;指定它的完整路径。
此外,由于您创建了一个变量结果在脚本中,您可能希望使用变量,而不是纯文件结果在当前目录中(当通过运行时,这可能是根目录计划任务,并且由于权限问题,在那里写入可能会失败)。请使用>>$result
,而不是>> result
。
最后,我只需使用一个循环sleep 600
(睡眠 600 秒)即可,而不必费力地使用 crontab(您迟早可能会忘记),然后您就可以永远进行速度测试。;-)