如何让 linux(raspberry) 运行 python 脚本在插件启动时?
How to let linux(raspberry) run python script when plugin power?
我有一个 python 脚本 (namely /home/pi/x.py
)。而且我已经尝试了很多方法让程序,比如:
#!/bin/bash
# /etc/init.d/mystart
### BEGIN INIT INFO
# Provides: Python
(I am thinking am I right here(Provides: Python)?)
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: my python initscript
# Description: no description
### END INIT INFO case "" in
start)
echo "Starting x.py "
/home/pi/x.py &
;;
stop)
echo "Stopping x.py"
#killall x.py
kill $(ps aux | grep -m 1 'python /home/pi/x.py' | awk '{ print }')
;;
*)
echo "Usage: service x.py start|stop"
exit 1
;; esac exit 0
我把这个bash从原来的形式修改了,放到了
/etc/inti.d/mystart
sudo chmod +x /etc/init.d/mystart
sudo update-rc.d mystart defaults
然而,当我尝试:sudo service mystart start
出现了一些错误!
[Unit mystart.service failed to load: No such file or directory.]
So I'm blocked here, I dont know how to let x.py run while it the
power is on
打开/etc/profile
sudo nano /etc/profile
滚动到底部并添加以下行:
sudo python /home/pi/x.py
其中“/home/pi/x.py”是脚本的绝对路径。
输入“Ctrl+X”退出,然后输入“Y”保存,然后按“Enter”两次。现在重新启动并测试。 python 脚本现在应该 运行 启动时
自动登录设置(无需用户干预即可执行脚本)
打开/etc/inittab
须藤纳米 /etc/inittab
找到这一行
1:2345:重生:/sbin/getty 115200 tty1
在行首添加#字符以禁用它,使其看起来像
#1:2345:重生:/sbin/getty 115200 tty1
在那一行下,添加以下内容:
1:2345:respawn:/bin/login -f pi tty1 /dev/tty1 2>&1
其中“pi”是用户名。输入“Ctrl+X”退出,然后输入“Y”保存,然后按“Enter”两次。现在启动时,raspberrypi 将使用 pi
用户自动登录并执行您的脚本
没有/etc/inittab怎么办?
我假设您使用的是最新的 Raspian-Image (jessie)。这个基于 Debian 8 (jessie),其中 init-system 发生了变化。已经提到自动登录解决方案
来源:
http://www.raspberrypi-spy.co.uk/2015/02/how-to-autorun-a-python-script-on-raspberry-pi-boot/
我用过crontab
,效果很好
第 1 步:
sudo crontab -e
第二步:填写
@reboot python /home/pi/x.py &
步骤 3:保存并重启
我有一个 python 脚本 (namely /home/pi/x.py
)。而且我已经尝试了很多方法让程序,比如:
#!/bin/bash
# /etc/init.d/mystart
### BEGIN INIT INFO
# Provides: Python
(I am thinking am I right here(Provides: Python)?)
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: my python initscript
# Description: no description
### END INIT INFO case "" in
start)
echo "Starting x.py "
/home/pi/x.py &
;;
stop)
echo "Stopping x.py"
#killall x.py
kill $(ps aux | grep -m 1 'python /home/pi/x.py' | awk '{ print }')
;;
*)
echo "Usage: service x.py start|stop"
exit 1
;; esac exit 0
我把这个bash从原来的形式修改了,放到了
/etc/inti.d/mystart
sudo chmod +x /etc/init.d/mystart
sudo update-rc.d mystart defaults
然而,当我尝试:sudo service mystart start
出现了一些错误!
[Unit mystart.service failed to load: No such file or directory.]
So I'm blocked here, I dont know how to let x.py run while it the power is on
打开/etc/profile
sudo nano /etc/profile
滚动到底部并添加以下行:
sudo python /home/pi/x.py
其中“/home/pi/x.py”是脚本的绝对路径。 输入“Ctrl+X”退出,然后输入“Y”保存,然后按“Enter”两次。现在重新启动并测试。 python 脚本现在应该 运行 启动时
自动登录设置(无需用户干预即可执行脚本)
打开/etc/inittab
须藤纳米 /etc/inittab
找到这一行
1:2345:重生:/sbin/getty 115200 tty1
在行首添加#字符以禁用它,使其看起来像
#1:2345:重生:/sbin/getty 115200 tty1
在那一行下,添加以下内容:
1:2345:respawn:/bin/login -f pi tty1 /dev/tty1 2>&1
其中“pi”是用户名。输入“Ctrl+X”退出,然后输入“Y”保存,然后按“Enter”两次。现在启动时,raspberrypi 将使用 pi
用户自动登录并执行您的脚本
没有/etc/inittab怎么办?
我假设您使用的是最新的 Raspian-Image (jessie)。这个基于 Debian 8 (jessie),其中 init-system 发生了变化。已经提到自动登录解决方案
来源: http://www.raspberrypi-spy.co.uk/2015/02/how-to-autorun-a-python-script-on-raspberry-pi-boot/
我用过crontab
,效果很好
第 1 步:
sudo crontab -e
第二步:填写
@reboot python /home/pi/x.py &
步骤 3:保存并重启