擅长:python、mysql、java
<p>我有完全相同的问题。我需要使用树莓pi来检查附近是否有特定的蓝牙设备,并向监控服务发送心跳信号</p>
<p>在像<code>* * * * * sudo btmgmt find > /tmp/ble_devices.txt</code>这样的cron作业中执行命令时,我没有从<code>sudo btmgmt find</code>获得任何输出,如果我使用python捕获Popen调用的输出也是如此。所以我问自己是否可以在另一个屏幕上执行它,结果它成功了</p>
<p>我的解决方案相当老套。我做了以下工作:</p>
<ol>
<li>在raspberry pi上安装了屏幕工具:<code>sudo apt install screen</code></li>
<li>已创建用于运行扫描命令的屏幕:<code>screen -S blescan</code></li>
<li>从屏幕<code>ctrl</code>+<code>a</code>+<code>d</code>中分离我自己</li>
<li>在<code>/home/pi/scan_job</code>中创建了一个shell脚本,内容如下:</li>
</ol>
<pre><code> #!/bin/bash
cd <to python project> && ./<file to be executed>
</code></pre>
<ol start=“5”>
<li>使其可执行<code>chmod +x /home/pi/scan_job</code></li>
<li>在<em>blescan</em>屏幕中设置cronjob以执行文件:</li>
</ol>
<pre><code>*/10 * * * * screen -S blescan -X screen '/home/pi/scan_job'
</code></pre>