运行 脚本形式 .bashrc 仅一次

run script form .bashrc only once

我想要一个 python 脚本在我的树莓派 pi2 启动时执行,所以我把它放到 .bashrc 中。 Launching the script with crontab 没用。

但是我只想执行一次。不是每次我进入终端或每次我通过 ssh 登录时。 我糟糕的尝试当然没有奏效,原因很明显。

python_running=false
if [ "$python_running" = false ] ; then
  ./launcher.sh
  $python_running = true
fi

编辑: 我的主要问题是 python 脚本需要访问互联网。必须在执行脚本之前建立连接。 在第一个回答和评论之后,我意识到 .bashrc 不是在启动时启动脚本的好地方。它适用于自动登录,但不是一个合适的解决方案。 但是 运行 脚本只有一次的正确解决方案是什么?

好的..所以我们需要澄清一些术语..

pi(或任何 unix 系统)并没有真正区分 "console" 登录或 ssh(远程)登录,无论如何它都会让您进入 shell。

但是,如果您希望某些东西在启动时启动(这就是我想您想要的),请查看 /etc/rc.d - 在这里查看 - http://raspberrywebserver.com/serveradmin/run-a-script-on-start-up.html - 但以防万一link 去,在 /etc/rc.local

中输入命令

.bashrc 绝对不是一个合适的地方。要在启动时启动脚本,我发现最好和最简单的解决方案是 crontab:

sudo crontab -e

然后将以下行添加到文件末尾:

@reboot sh /home/pi/launcher.sh > /home/pi/logs/cronlog 2>&1

但是要使用 crontab,需要将 shell 脚本更改为 wait/poll 以连接互联网:

ROUTER_IP=192.168.0.1
while ( ! ping -c1 $ROUTER_IP) do
  echo "network is not up yet"
  sleep 3
done
echo "network is up now"
python3 myScript.py &

轮询可能不是最佳选择,但每 3 秒创建一个休眠进程并没有错。