只运行脚本表单.bashrc一次

时间:2015-09-01 15:31:12

标签: python bash raspberry-pi2

我想在我的覆盆子pi2上启动时执行一个python脚本,所以我将它放入.bashrc。 Launching the script with crontab没有工作。

但我只想执行一次。不是每次我进入终端或每次我通过ssh登录。 我的糟糕尝试当然没有效果,这显然是为什么。

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

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

2 个答案:

答案 0 :(得分:2)

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

sudo crontab -e

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

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

但是要使用crontab,需要将shell脚本更改为等待/轮询以进行Internet连接:

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秒创建一个睡眠过程并没有错。

答案 1 :(得分:1)

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

pi(或任何unix系统)并没有真正区分“控制台”登录或ssh(远程)登录,无论如何它都会让你进入shell。

但是,如果你想在启动时启动一些东西(这是我想你想要的),那么看看/etc/rc.d - 看看这里 - http://raspberrywebserver.com/serveradmin/run-a-script-on-start-up.html - 但是如果链接去了,在/etc/rc.local

中输入命令