我编写了一个脚本,将本地传感器的温度发送到互联网上的服务器,然后我可以看到它的图表。当我手动执行它时,一切都正常。我有最新的 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 作业仅使用HOME
、LOGNAME
、PATH
和SHELL
set 运行。
该脚本文件还需要是可执行的(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
谢谢大家的帮助。我设法在本文的帮助下以服务形式运行它地点 你可以按照他说的做。或者,你可以这样做,这样就可以运行任何脚本。
- 首先,创建一个脚本,并根据需要进行编辑。假设你将其命名为 autorun.sh
- 将该脚本复制到 /etc/init.d 中
运行以下命令:
sudo update-rc.d autorun.sh defaults
sudo chmod +x /etc/init.d/autorun.sh
再次感谢大家的建议。我真的没有时间检查所有建议。我会尽快检查的!