我有两个活跃的树莓派。他们都有剧本:adxl345test.py
该脚本从加速度计收集数据。我通常在一个 RPi 上启动脚本,然后在另一个 RPi 上启动脚本。我在一个 RPi 上运行两个 RPi 的脚本。这样,一个 RPi 就会开始运行自己的脚本和另一个 RPi 的外部脚本。
sudo python adxl345test.py
我通过在控制台中写入然后按 Enter 键来触发每个 RPi 上的脚本。时钟与 PTPd 同步。 RPi 已联网。
我通过一个命令运行这两个脚本。这里是:
pi@Sensor1:~ $ sudo python adxl345test.py & sshpass -p 'password' ssh pi@ip sudo python adxl345test.py
使用 sshpass ( sudo apt-get install sshpass
) 我设法直接在命令中输入密码。
现在我想停止记录数据!通常我会使用Ctrl+ C,但这仅在一个 RPi 上运行单个脚本时有效。
我正在寻找的是通过在一个 RPi 的控制台中编写单个命令来停止脚本。目前,精度并不是那么重要。
我想也许我可以使用以下命令:
sudo killall python & sshpass -p 'password' ssh pi@ip sudo killall python
---编辑作品!
此命令确实会停止两个 RPi 收集数据。在一个 RPi 上,一切正常,数据已正确记录,但在另一个 RPi 上,由于某种原因,它根本不记录任何数据,即使它应该记录。
我希望能够在 x 秒后停止两个 RPi 收集数据。
事实证明我正在运行的脚本缺少重要的定义。现在,上述的killall突击队可以正常工作,并且数据也得到了妥善保存。
答案1
首先,您可以使用 SSH 公钥身份验证来运行您的命令一个远程 RPI,这非常方便。您可以使用主 RPI(传感器 1)中的一个简单命令来完成此操作ssh-copy-id pi@ip
,如果您想进行设置,我可以在评论中为您提供帮助。
您可以使用“超时”在定义的时间内运行脚本,如下所述这里。
关于你的killall,你确定该进程已经运行了吗?启动脚本后尝试获取进程的 PID pgrep -f adxl345test.py
,并查看是否返回 pid,然后杀死它kill <PID>
并查看是否获取数据。