我认为我有部分术语问题,部分只是普通的新问题,部分厌倦了阅读问题。
到目前为止,我已经完成了家庭能源监控项目,包括让我的SDR无线电工作,解码数据,将json推送到InfluxDB,运行Grafana并获取图表!所有通过谷歌搜索,因为我有不到2个月的Linux经验(只是玩Raspberry Pi / OrangePi。
我的OrangePi运行Armbian Ubuntu 16.04
我需要一个非常简单的“命令”来执行启动。它将一直在后台运行。所以我猜这是一个守护进程? 命令是
/home/jonboy545/GoCode/bin/rtlamr -filterid=62059972 -format=json -msgtype=idm unique=true | rtlamr-collect
而已。我创建了一个名为log_energy.sh的简单脚本,使其可执行。只是:
#!/bin/bashr
/home/jonboy545/GoCode/bin/rtlamr -filterid=62059972 -format=json -msgtype=idm unique=true | rtlamr-collect;
如果我在终端窗口中键入./log_energy.sh,一切都很好。我必须打开一个SCREEN实例,所以我可以拆开它,这样我就不必将终端打开了。显然这不是最好的解决方案。
那么,我把它放到rc.local中吗?我有一些问题,我认为它执行得太快,所以我试着在那里睡60,但它仍然是零星的。有时它有效,有时则没有。 所以我考虑使用crontab,让它执行@reboot。同样,可能不是最好的解决方案。还有必须声明的环境变量并在〜/ .profile中设置(我猜他们可以去任何地方)我不确定crontab“读取”那些环境变量,至少我读过的是这些。
那么什么是让这个脚本在启动时执行的“正确”方式(可能在最后,一旦所有内容都“稳定下来”)。
最终我想把它作为一个名为“energylog”的“服务”,所以我可以做一个sudo服务energylog启动/停止/重启。
我查看了/etc/init.d/skeleton以及/etc/init.d中的一些现有文件,但我不确定我在看什么。
有人能引导我朝着正确的方向前进吗?
非常感谢!