1. 使用rc.local
方法添加
原文地址:http://www.raspberrypi.org/documentation/linux/usage/rc-local.md
为了在树莓派启动的时候运行一个命令或程序,你需要将命令添加到rc.local文件中。这对于想要在树莓派接通电源后无需配置直接运行程序,或者不希望每次都手动启动程序的情况非常有用。
另一种替代定时任务的方法是使用cron和crontab。
编辑rc.local
文件
在你的树莓派上,选择一个文本编辑器编辑/etc/rc.local
文件。你必须使用root权限编辑,例如:
sudo nano /etc/rc.local
- 1
在注释后面添加命令,但是要保证exit 0
这行代码在最后,然后保存文件退出。
注意
如果你的命令需要长时间运行(例如死循环)或者运行后不能退出,那么你必须确保在命令的最后添加“&”符号让命令运行在其它进程,例如:
python /home/pi/myscript.py &
- 1
否则,这个脚本将无法结束,树莓派就无法启动。这个“&”符号允许命令运行在一个指定的进程中,然后继续运行启动进程。
另外,确保文件名使用绝对路径,而不是相对于你的home目录的相对路径。例如:使用/home/pi/myscript.py
而不是用myscript.py
。
2. 窗口系统启动后,自动运行自定义的程序的实现方法
进入当前用户HOME目录下的.config/autostart
目录,生成一个*.desktop文件(比如:xxx.desktop),命令如下:
sudo nano ~/.config/autostart/xxx.desktop
- 1
输入以下文件内容:
[Desktop Entry]
Type=Application
Exec=python /home/pi/myscript.py
- 1
- 2
- 3
最后一句Exec的值就是要启动的程序名(最好是全路径的可执行文件名),此处是运行一个Python脚本。保存退出,重启机器,脚本就会在进入窗口系统自动运行了。
原理:startx后,LXDE窗口管理器会找到~/.config/autostart
目录下的所有 .desktop文件,一一执行。
3. 查看进程是否运行
我们就可以使用下面的命令查看Python进程的id:
ps -ef |grep python
- 1
或者
pstree |grep python
- 1
第二列即为当前进程的id,如果需要直接终止Python程序,执行:
kill -9 pid
- 1
再查看一下进程,发现脚本进程已经消失了,搞定。
systemd 里有 rc-local.service ,只需要再写一个 rc.local 的脚本即可。
1、编辑 /usr/lib/systemd/system/rc-local.service 文件:
[Unit]
Description=/etc/rc.d/rc.local Compatibility
After=network.target
[Service]
Type=forking
ExecStart=/etc/rc.d/rc.local start
TimeoutSec=0
RemainAfterExit=yes
SysVStartPriority=99
[Install]
WantedBy=multi-user.target
其中 Install 那部分是自己写的,multi-user.target 代表3级别,graphical.target 代表5级别。
2、编辑 /etc/rc.d/rc.local 文件:
# cat /etc/rc.d/rc.local
#!/bin/bash
xxxxxxxxxx 代表自定义内容,设置开机启动
3、给 /etc/rc.d/rc.local 可执行权限:
#chmod +x /etc/rc.d/rc.local:
4、开启 rc-local.service 服务:
#systemctl enable rc-local.service
#systemctl --system daemon-reload
#systemctl start rc-local.service
本文出自 “myway” 博客,请务必保留此出处http://cakong.blog.51cto.com/794290/1618364
原文地址:http://cakong.blog.51cto.com/794290/1618364