如何让该脚本通过 cron 定期运行?

如何让该脚本通过 cron 定期运行?

我编写了一个脚本,将本地传感器的温度发送到互联网上的服务器,然后我可以看到它的图表。当我手动执行它时,一切都正常。我有最新的 ubuntu 版本。当它每分钟使用 crontab 定期运行时,什么都不起作用。它没有发送任何东西。我尝试以 SUDO 和用户身份运行它,我尝试将它添加到 crontab 文件中以从多个位置运行它,例如 /bin/myscript.sh、/user/Desktop 和许多其他位置......似乎什么都不起作用。有什么想法如何解决它吗?谢谢!

   echo Init ... 
   TEMP=`/usr/bin/snmpwalk  -v 1 -c public 192.168.1.2 iso.3.6.1.4.1.38783.3.9.0 |  cut -d" " -f4` 
   echo $TEMP


   REALTEMP=`echo  "scale=1; $TEMP/10"  | bc -l`
   echo $REALTEMP 

   echo 
   wget "http://api.thingspeak.com/update?key=MYKEY=$REALTEMP"

答案1

假设您的 crontab 行仅包含脚本名称,您需要指定应该执行什么脚本,可以在 crontab 中(假设它应该使用 bash shell 运行)

/5 * * * * /bin/bash /path/to/myscript.sh

或者在脚本开头添加一行“shebang”

#!/bin/bash

该脚本依赖于任何环境变量并不明显,但值得注意的是,cron 作业仅使用HOMELOGNAMEPATHSHELLset 运行。

该脚本文件还需要是可执行的(chmod +x myscript.sh)。

答案2

我在我的服务器上遇到了类似的问题,无法让 cron 识别命令。解决我问题的提示来自Ubuntu Cron 使用方法

在空白 crontab 中添加新条目时,忘记在末尾添加换行符是导致作业无法运行的常见原因。如果 crontab 中的最后一行没有以换行符结尾,则在编辑或运行时不会报告任何错误,但该行永远不会运行。有关更多信息,请参阅 man crontab。这已被建议为错误。

答案3

我对您的脚本问题一无所知,但如果您需要通过网络服务器获取一些有关传感器温度的实时图表,您可以尝试一下psensor-server

它在标准 ubuntu 存储库中可用,因此您可以使用“sudo apt-get install psensor-server”轻松安装它,运行“psensor-server”,最后打开 URL“http://主机名:3131'. 您将获得此类图表:

在此处输入图片描述

或者,你可以使用'以 JSON 输出的形式通过编程检索温度http://主机名:3131/api/1.0/传感器“”。

答案4

谢谢大家的帮助。我设法在本文的帮助下以服务形式运行它地点 你可以按照他说的做。或者,你可以这样做,这样就可以运行任何脚本。

  1. 首先,创建一个脚本,并根据需要进行编辑。假设你将其命名为 autorun.sh
  2. 将该脚本复制到 /etc/init.d 中
  3. 运行以下命令:

    sudo update-rc.d autorun.sh defaults

    sudo chmod +x /etc/init.d/autorun.sh

再次感谢大家的建议。我真的没有时间检查所有建议。我会尽快检查的!

相关内容