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

再查看一下进程,发现脚本进程已经消失了,搞定。

版权声明:本文为博主原创文章,转载前请联系作者授权。 https://blog.csdn.net/la9998372/article/details/77886758
 
//以上为raspberry 2b+ 2014年以前的解决方案,
上3b的时候,发现系统无法自动启动/etc/rc.local   说是这个文件的权限小,开机启动是随缘的,隧解决之就是通过systemctl+给权限
 
 
真的是一环扣一环,惊险又赤激!!!
 
 

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

systemd设置rc.local开机启动

标签:systemd rc.local

原文地址:http://cakong.blog.51cto.com/794290/1618364

 
 
 
posted on 2018-04-23 12:48  劳斯机要开车了  阅读(762)  评论(0编辑  收藏  举报