Cronjob问题

时间:2014-09-06 21:07:02

标签: bash cron

我写了一个小的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调用脚本时我无法获得下载和上传速度读数吗?

1 个答案:

答案 0 :(得分:0)

此外,每当您编写cronjob时,请确保提供脚本的 ABSOLUTE 路径名称,而不是 RELATIVE 路径名称。如果您使用相对路径名称,那么它可能无法解决您的问题。

例如:
    绝对路径 - /var/www/html/scripts/db_backup.php
    相对路径 - scripts / db_backup.php

那么,让我举个例子:一个cronjob,可以转换所有日子的每分钟的当前日期时间,而不管一周中的哪一天。

crontab.txt
-----------

* * * * * /var/www/html/shell_scripts/currentDateTime.sh

currentDateTime.sh
------------------
#!/bin/bash

date >> /var/www/html/date_logs/dateTime.txt

确保为currentDatetime.sh提供执行访问权限。在linux机器中,您可以通过以下方式执行此操作

chmod +x currentDateTime.sh

or

chmod 755 currentDateTime.sh

要注册cronjob,我们将通过以下方式进行注册。在这里,我更改了 crontab.txt 所在的目录,即 / var / www / html / shell_scripts 。然后执行以下命令。

/* To Register my cronjob to cron table */

crontab crontab.txt

希望它可以帮助某人。快乐的编码!