我想在我的覆盆子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不是在启动时启动脚本的好地方。它适用于自动登录,但不是一个合适的解决方案。 但是,只运行一次脚本可能是一个合适的解决方案吗?
答案 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
中输入命令