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

树莓派4基于Debian GNU/Linux 12 (Bookworm)设置程序开机自启动

以下是在树莓派 4 基于 Debian GNU/Linux 12 (Bookworm) 系统中,将 /home/admin/pyy_project/0x03/build/ 目录下的 0x01 软件设置为开机自启动,并在系统启动后等待 10 秒再启动该程序的步骤:

1. 创建 systemd 服务单元文件

  • 使用文本编辑器(如 nano)创建一个新的 systemd 服务单元文件 /etc/systemd/system/0x01.service:

    sudo nano /etc/systemd/system/0x01.service
    
  • 在打开的文件中添加以下内容:

    [Unit]
    Description=0x01 Software Service
    After=network.target
    
    [Service]
    ExecStartPre=/bin/sleep 10  # 在启动程序前先睡眠 10 秒
    ExecStart=/home/admin/pyy_project/0x03/build/0x01
    Restart=on-failure
    User=admin  # 这里使用 admin 用户,你也可以根据实际情况修改为其他用户
    Group=admin  # 这里使用 admin 组,你也可以根据实际情况修改为其他组
    
    [Install]
    WantedBy=multi-user.target
    
  • 将 /home/admin/pyy_project/0x03/build/0x01 替换为你的程序的实际路径,User 和 Group 可根据程序运行所需的用户和组进行修改,如果程序可以由普通用户运行,使用当前登录的用户(如 admin)即可。

2. 重载systemd配置

  • 保存并关闭文件后,运行以下命令使 systemd 重新加载配置,使新的服务单元生效:

    sudo systemctl daemon-reload
    

3. 启动服务并设置开机自启动

  • 启动 0x01 软件对应的服务:

    sudo systemctl start 0x01.service
    
  • 设置该服务开机自启动:

    sudo systemctl enable 0x01.service
    

4. 说明

  • [Unit] 部分:
    • Description 用于描述该服务的名称,可自行修改,便于识别服务。
    • After=network.target 表示该服务将在网络服务启动之后启动。
  • [Service] 部分:
    • ExecStartPre=/bin/sleep 10:在启动程序之前,使用 /bin/sleep 10 命令让系统等待 10 秒。
    • ExecStart 是最重要的部分,指定了要启动的程序的完整路径。
    • Restart=on-failure 表示当服务出现错误而退出时会尝试重新启动服务,可根据需要调整为 always (总是重启)或 no (不重启)等。
    • User 和 Group 分别指定了运行该服务的用户和组,确保程序以指定用户或组的权限运行,避免使用 root 权限带来的安全风险。
  • [Install] 部分:
    • WantedBy=multi-user.target 表示该服务将在多用户模式下启动,即系统正常启动并进入多用户命令行或图形界面时会启动该服务。

这样,程序 /home/admin/pyy_project/0x03/build/0x01 将会在系统开机并等待 10 秒后自动启动,且以 admin 用户的权限运行,无需提升为 root 权限,提高了系统的安全性。
请注意,使用 ExecStartPre=/bin/sleep 10 只是一种简单的实现方式,如果你需要更精确的时间控制或复杂的启动条件,可以考虑使用 systemd 的定时器功能或编写一个启动脚本,在脚本中添加等待逻辑。


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

相关文章:

  • 在centos上编译安装opensips【初级-默认安装】
  • Cursor的详细使用指南
  • flutter跨端UI框架简介
  • 递归练习六(普通练习11-15)
  • 前端 window.print() 打印图片
  • 《目标检测数据集下载地址》
  • TiDB 的高可用实践:一文了解代理组件 TiProxy 的原理与应用
  • pyautogui自动化鼠标键盘操作
  • Redis 7.0 新特性助力:小红书利用 I/O 多线程模型应对高并发挑战
  • 汽车和工业用激光雷达行业分析
  • C语言练习(16)
  • Ubuntu16.04 安装OpenCV4.5.4 避坑
  • 深度学习之监督学习和无监督学习的探讨
  • ECharts 海量数据渲染性能优化方案
  • “物联网+高职”:VR虚拟仿真实训室的发展前景
  • 【分布式架构设计理论1】架构设计的演进过程
  • 云知声:语音交互领域的技术先锋与创新引擎
  • 一文讲解Redis常见使用方式
  • 高校宿舍信息|基于Spring Boot的高校宿舍信息管理系统的设计与实现(源码+数据库+文档)
  • Httprunner接口测试框架入门
  • 微信小程序使用上拉加载onReachBottom。页面拖不动。一直无法触发上拉的事件。
  • SQL-leetcode—1148. 文章浏览 I
  • tensorflow源码编译在C++环境使用
  • pycharm+pyside6+desinger实现查询汉字笔顺GIF动图
  • Golang Gin系列-5:数据模型和数据库
  • leetcode 407. 接雨水 II