当前位置: 首页 > news >正文

树莓派学习【2】开机自动启动程序的方法

目录

  • 方法一:使用 `systemd` 服务(推荐)
    • 1. 编写 Python 程序
    • 2. 创建服务单元文件
    • 3. 编辑服务单元文件
  • 方法二:使用 `crontab`
  • 方法三:使用 `rc.local`
  • 方法四:使用 `init.d` 脚本(不推荐)
      • 推荐方法

在树莓派上实现开机自启动 Python 程序有多种方法,以下是几种常见的方法:

方法一:使用 systemd 服务(推荐)

systemd 是 Linux 系统中用于系统和服务管理的守护进程,通过创建一个服务单元文件,可以实现程序的开机自启动。

1. 编写 Python 程序

假设你的 Python 程序名为 my_script.py,并将其放在树莓派的某个目录下,例如 /home/pi/my_script.py

2. 创建服务单元文件

/etc/systemd/system/ 目录下创建一个服务单元文件,例如 my_script.service。可以使用以下命令创建并编辑该文件:

sudo nano /etc/systemd/system/my_script.service

3. 编辑服务单元文件

在打开的文件中,输入以下内容:

[Unit]
Description=My Python Script
After=network.target

[Service]
ExecStart=/usr/bin/python3 /home/pi/my_script.py
WorkingDirectory=/home/pi
StandardOutput=inherit
StandardError=inherit
Restart=always
User=pi

[Install]
WantedBy=multi-user.target
  • Description:服务的描述。
  • After:指定服务在 network.target 启动后启动。
  • ExecStart:指定要运行的 Python 程序的路径。(注意,如果是python虚拟空间,直接指定虚拟空间的目录即可)
  • WorkingDirectory:指定工作目录。
  • StandardOutputStandardError:指定标准输出和标准错误的处理方式。
  • Restart:设置为 always,表示程序崩溃后会自动重启。
  • User:指定以哪个用户身份运行程序。
  • WantedBy:指定该服务在哪个运行级别启动。
  1. 启用服务
    保存并关闭文件后,运行以下命令启用服务:

    sudo systemctl enable my_script.service
    sudo systemctl start my_script.service
    
  2. 检查服务状态
    可以使用以下命令检查服务状态:

    sudo systemctl status my_script.service
    

方法二:使用 crontab

crontab 是 Linux 系统中用于定时任务的工具,也可以用于实现开机自启动。

  1. 编辑 crontab 文件
    输入以下命令编辑 crontab 文件:

    crontab -e
    
  2. 添加开机自启动任务
    在文件末尾添加以下内容:

    @reboot /usr/bin/python3 /home/pi/my_script.py
    

    这表示在系统启动时运行指定的 Python 程序。

  3. 保存并退出
    保存文件并退出编辑器。

方法三:使用 rc.local

rc.local 是一个传统的 Linux 启动脚本,虽然在现代系统中可能不如 systemd 强大,但仍然可以用于简单的开机自启动任务。

  1. 编辑 rc.local 文件
    输入以下命令编辑 /etc/rc.local 文件:

    sudo nano /etc/rc.local
    
  2. 添加启动命令
    在文件中添加以下内容(注意确保 rc.local 文件以 exit 0 结尾):

    /usr/bin/python3 /home/pi/my_script.py &
    
  3. 保存并退出
    保存文件并退出编辑器。

  4. 设置文件权限
    确保 rc.local 文件具有可执行权限:

    sudo chmod +x /etc/rc.local
    

方法四:使用 init.d 脚本(不推荐)

虽然 init.d 是较老的启动方式,但在某些情况下仍然可以使用。不过,建议优先使用 systemd,因为它更强大且是现代 Linux 系统的默认方式。


推荐方法

在现代 Linux 系统中,推荐使用 systemd 服务,因为它功能强大、配置灵活,并且能够更好地管理程序的启动、停止和错误处理。

相关文章:

  • Android 8.0 (API 26) 对广播机制做了哪些变化
  • MQTT实现智能家居------4、在Linux上运行MQTT
  • MySql常用指令
  • 请谈谈 React 中的状态管理,如何使用 Context API 和 Redux 进行状态管理?
  • 在 Windows 下的 Docker 中安装 R语言
  • 微服务即时通信系统---(六)语音识别子服务
  • Mac 上安装多版本的 JDK 且实现 自由切换
  • Zabbix问题记录2--踩坑HttpRequest,header添加无效
  • 4.static关键字和const关键字的作用【高频】
  • 算法思想-动态规划算法
  • Vue的项目创建以及项目目录与组合式API
  • 快速入门——状态管理VueX
  • 动态规划(背包问题)--是否逆序使用的问题--二进制拆分的问题
  • linux /var/log/syslog过大问题及解决 Systemd定时器用于清除
  • 深入理解 `Sinks.Empty<Void>` 和 `Mono<Void>`:如何触发完成信号并结合 WebSocket 示例
  • axios、axios二次封装、api解耦
  • CF 58A.Chat room(Java实现)
  • 【ProtoBuf】proto3语法(一)
  • ctfshow——版本控制泄露源码
  • OPPO高级大模型算法岗内推
  • 国家高新技术企业认定的要求/seo网络培训机构
  • ui设计的网站/seo排名优化表格工具
  • 枣庄市网站建设/免费创建网站软件
  • 马云做的国外的网站叫什么名字/阜阳seo
  • 做网站很简单/百度助手app下载
  • 网站设计的主要机构有哪些?/互联网营销师报名入口