计划 cron 时 speedtest-cli 不执行

计划 cron 时 speedtest-cli 不执行

服务器:Ubuntu 20.04.2 LTS

命令:速度测试|速度测试-cli

我有一个 Bash 脚本来识别每个下载和上传速度15 分钟。当我手动执行它时,它运行良好,但在 cron 上却不行。

第一次,假设在 12:00 它正确执行,以下是输出

从 AT&T 服务(12.26.3.241)进行测试...

正在检索 speedtest.net 服务器列表...

根据 ping 选择最佳服务器...

由 AWI 网络(犹他州圣乔治)主办

测试下载速度.................................................................................

下载:*** Mbit/s

测试上传速度................................................................................

上传:*** Mbit/s

第二次,12:15:-

正在检索 speedtest.net 配置...

从 AT&T 服务(12.26.3.241)进行测试...

正在检索 speedtest.net 服务器列表...

根据 ping 选择最佳服务器...

当我检查用户的邮件时,出现以下错误:-

错误:无法连接到服务器来测试延迟。

答案1

同样的问题。似乎服务器在特定时间超载。我的 cron 表达式是 "0 /15 * 1/1 * ? *" 这样的,作业开始于:10:00、10:15、10:30...

我将 cron-expression 改为 "0 4/15 * 1/1 * ? *" 这样,工作开始的时间是:10:04、10:19、10:34...

帮我解决了这个问题。

亲切的问候

答案2

当同一个作业在命令行上工作时,cron 作业不起作用的典型原因是环境不同。你可以用下面的方法解决这个问题:

  1. 将您想要运行的命令放在脚本中,不要忘记添加shebang。
  2. 在您要运行的命令前添加一个 source 命令,以便加载您的 .bashrc 配置。
  3. 确保您的脚本是可执行的。
  4. 调整 cron 以使用脚本的完整路径运行脚本。
    source /path/to/your/.bashrc

祝你好运!

答案3

尝试将以下标志添加到您的 .sh 脚本中,它解决了我的问题:

我的脚本运行速度测试

#!/bin/bash
speedtest --accept-license --accept-gdpr >> /home/xxx/speedtesty/results

Crontab 条目:

/10 * * * * /bin/bash /home/xxx/speedtesty/run_speedtest.sh

答案4

我找到了答案 - 如果你将脚本放入 cron 中,则不需要使用“”来包含要运行的命令。脚本在命令行上像这样工作,但在 cron 中则不行。改用 '' 来包含命令,如下所示(我使用 csv 选项,这样我就可以对结果进行一些操作):

我创建了一个名为的变量SPEEDTEST来运行该命令,如下所示,然后使用以下命令运行它$SPEEDTEST

SPEEDTEST='/usr/local/bin/speedtest --csv'

相关内容