0

我已经用 Pis 进行了一段时间的试验,并且即将完成我的第一个项目,我已经完成了所有工作,但我正在努力将它们全部整合到一个自动化过程中。

基本上,我有一个 Pi 设置来从特定文件夹运行 fbi 幻灯片,我希望它不断寻找预先建立的 Wifi 网络,当它找到这个网络时,它需要运行更新脚本。我已经让这两个位工作了。

从这里开始,我希望在后台运行检查脚本时打开 Pi 并直接加载到 fbi 中,如果检查脚本找到 Wifi 网络,那么它将正常运行(最好不结束幻灯片)并且完成后fbi 应该有一个更新的图像选择来运行(如果需要重新启动 fbi,那就这样吧)。

我无法实现这一目标。我可以运行一个脚本或另一个,如果我使用 rc.local 自动执行检查脚本(虽然我敢说我做错了什么,但 cron 没有工作)它只会在登录前卡在检查循环中,这有点考虑到脚本是有道理的。

这是监控脚本:

#!/bin/bash

while true ; do
  if ifconfig wlan0 | grep -q "inet addr:" ; then
    echo "Wifi connected!"
    echo "Initiating Grive sync!"
    (cd /home/pi/images/; ./grive -s Pi_Test -V)
    sleep 60
  else
    echo "Wifi disconnected!  Attempting to reconnect now."
    ifup --force wlan0
    sleep 10
  fi
done

如果它是相关的,这里是运行 fbi 幻灯片的命令:

fbi -noverbose -a -t 10 -u /home/pi/images/Pi_Test/*.jpg
4

1 回答 1

1

我没有 Pi,但我在运行 CentOS 的 VPS 上使用了cron,但总体过程应该相似。

要让cron执行一些脚本,您需要:

  1. 编辑 /etc/cron.allow
    您需要将您的用户 ID 添加到此文件中,以便您可以使用 crontab。
  2. crontab -e
    使用此命令添加要触发的规则。根据您的描述,在我看来,您已经知道将规则添加到 cron 表中的语法。
    之后,您可以使用crontab -l来验证您的更改。

至于在登录前卡住,这很可能是由于while循环。您可能想摆脱 while 和 sleep,因为cron通过定期调用您的脚本来帮助您。
因此,以下内容不应受到卡住问题的影响。

if ifconfig wlan0 | grep -q "inet addr:" ; then
    echo "Wifi connected!"
    echo "Initiating Grive sync!"
    (cd /home/pi/images/; ./grive -s Pi_Test -V)
else
    echo "Wifi disconnected!  Attempting to reconnect now."
    ifup --force wlan0
fi

相反,诀窍是在您的cron 表中有一些与此类似的行

*/1 * * * * /home/David_Legassick/test.sh

*/1要求crontest.sh每分钟调用一次您的脚本。

于 2014-08-06T19:56:03.383 回答