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

树莓派学习【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 服务,因为它功能强大、配置灵活,并且能够更好地管理程序的启动、停止和错误处理。


http://www.kler.cn/a/562515.html

相关文章:

  • 代码随想录算法训练营第十四天|226.翻转二叉树|101. 对称二叉树|104.二叉树的最大深度|111.二叉树的最小深度
  • vue自定义指令千分位
  • 记录一下用docker克隆某授权制定ip的环境恢复
  • Amazon Outposts:构建混合云的安全堡垒,让数据安全“零距离”
  • WIFI的SSID超长,隐藏,重复 (2.4G和5G差异)
  • 使用virtualenv遇到的问题,工具冲突
  • 千峰React:函数组件使用(1)
  • Windows 11【1001问】安装Windows 11的六种方法
  • java23种设计模式-桥接模式
  • 蓝桥杯之枚举
  • 记录Qt 虚拟键盘样式修改与使用
  • 用Python写一个获取IP地址的脚本
  • android s下make otapackage编译失败
  • YOLOv10 解析与地平线 征程 6 模型量化
  • 中国AI科技崛起,资本市场投资正当时
  • 前端浏览器开发中的浏览器兼容问题【持续更新】
  • 软考高级【网络规划设计师】 综合知识
  • 【QT Quick】C++扩展QML类型
  • stm32-LCD(液晶显示器)
  • 【Matlab仿真】Matlab Function中如何使用静态变量?