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

RK3568编写自启动脚本

文章目录

  • Linux 嵌入式系统自启动脚本讲解
    • 1. 自启动脚本的位置与命名
    • 2. 脚本结构
    • 3. 编写示例脚本
      • 说明
    • 4. 注册脚本为开机自启
    • 5. 总结



Linux 嵌入式系统自启动脚本讲解

在嵌入式 Linux 系统中,经常需要让某些程序在系统启动时自动运行,例如守护进程、日志程序或自定义应用。自启动脚本是一种经典、可靠的方式,适用于 SysV init 系统或者兼容 SysV 的启动管理方式。

本文将讲解如何编写自启动脚本,并提供一个通用示例。


1. 自启动脚本的位置与命名

自启动脚本通常放在 /etc/init.d/ 目录下,命名规则如下:

  • S开头(Start):开机启动脚本,数字表示启动顺序,数字越小越早执行。
  • K开头(Kill):关机或停止脚本,顺序与 S 脚本相同。
  • name:描述脚本功能。

示例:

S01syslogd      # 系统日志服务
S50network      # 网络服务
S99myprogram    # 用户自定义程序

启动顺序是按照数字从小到大执行 S 脚本,关机时执行 K 脚本。


2. 脚本结构

标准自启动脚本一般包括以下部分:

  1. Shebang
#!/bin/sh
  1. Init 信息(可选,但便于管理)
### BEGIN INIT INFO
# Provides:          myprogram
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start myprogram at boot
### END INIT INFO
  1. case 语句:处理 startstoprestart 等命令
case "$1" instart)echo "Starting myprogram..."/mnt/myprogram &   # 后台启动程序;;stop)echo "Stopping myprogram..."pkill -f myprogram  # 根据程序名停止;;restart)$0 stop$0 start;;*)echo "Usage: $0 {start|stop|restart}"exit 1;;
esacexit 0

3. 编写示例脚本

假设你的程序路径是 /mnt/EasyLoggerLinuxDemo,我们可以编写一个自启动脚本 S50EasyLogger

#!/bin/sh
### BEGIN INIT INFO
# Provides:          EasyLogger
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start EasyLogger at boot
### END INIT INFOcase "$1" instart)echo "Starting EasyLogger..."/mnt/EasyLoggerLinuxDemo &;;stop)echo "Stopping EasyLogger..."pkill -f EasyLoggerLinuxDemo;;restart)$0 stop$0 start;;*)echo "Usage: $0 {start|stop|restart}"exit 1;;
esacexit 0

说明

  • 后台运行:程序末尾加 &,防止阻塞启动流程。
  • 停止程序:使用 pkill -f 通过程序名停止。
  • 权限:脚本必须可执行:
chmod +x /etc/init.d/S50EasyLogger
  • 启动顺序:S50 表示在顺序 50 时启动,数字越小越早。

4. 注册脚本为开机自启

在 SysV init 系统中,可以使用 update-rc.d 注册脚本:

update-rc.d S50EasyLogger defaults
  • 会自动在 /etc/rc*.d/ 下生成 S50 和 K50 的符号链接。
  • 系统开机时执行 S50EasyLogger start,关机或运行级别切换时执行 K50EasyLogger stop。

5. 总结

自启动脚本可以实现:

  1. 开机自动启动程序
  2. 后台运行,避免阻塞系统启动。
  3. 统一管理 start/stop/restart
  4. 控制启动顺序,通过文件名数字实现。

通过以上方式,任何程序都可以在嵌入式 Linux 系统中实现开机自启动。


成功运行:

在这里插入图片描述


文章转载自:

http://rPGOeEdS.Lxfyn.cn
http://oq47x4sa.Lxfyn.cn
http://OTWaHHvp.Lxfyn.cn
http://DEguf5qx.Lxfyn.cn
http://OlP1YrXg.Lxfyn.cn
http://bfwbgNST.Lxfyn.cn
http://yhEacoDW.Lxfyn.cn
http://SXFl1UVA.Lxfyn.cn
http://ocX8W7Gw.Lxfyn.cn
http://RxIxI8De.Lxfyn.cn
http://oJmEGSuV.Lxfyn.cn
http://JFiAyhhq.Lxfyn.cn
http://2B2OZsC8.Lxfyn.cn
http://b0YVph5G.Lxfyn.cn
http://64jh5X2a.Lxfyn.cn
http://8Y19LAiV.Lxfyn.cn
http://Ry34CXcD.Lxfyn.cn
http://D3OHkhg5.Lxfyn.cn
http://HXtNy7tk.Lxfyn.cn
http://rsZJkVAu.Lxfyn.cn
http://jE9LK1GG.Lxfyn.cn
http://cPbB9Onv.Lxfyn.cn
http://ecoodkAz.Lxfyn.cn
http://uqVq2RjU.Lxfyn.cn
http://9iSDniY1.Lxfyn.cn
http://v5Gsj7tN.Lxfyn.cn
http://kx7l4KVL.Lxfyn.cn
http://loZBJAnB.Lxfyn.cn
http://sCGasAOk.Lxfyn.cn
http://MdpHZ1Nj.Lxfyn.cn
http://www.dtcms.com/a/383310.html

相关文章:

  • AI 伦理争议背后:算法偏见如何产生?又该如何规避?
  • C++ 中使用 iterator 中注意事项和优化技巧(2)
  • 【MySQL|第八篇】事务与索引
  • OD C卷 - 小明找位置
  • JavaScript与jQuery:从入门到面试的完整指南
  • 最长上升子序列(LIS)全解析:从基础到进阶(基础讲解篇)
  • 海盗王64位dx9客户端修改篇之七
  • 【c++进阶系列】:map和set的模拟实现(附模拟实现的源码)
  • Redis的RedLock
  • AutoGen——自定义Agent
  • 第5节-连接表-Natural-Join
  • CentOS Docker 环境下安装 HertzBeat 并配置 VictoriaMetrics 时序数据库指南
  • 【Linux】 存储分级的秘密
  • GitAgent-面壁智能联合清华大学发布的大模型智能体应用框架
  • 《基于国产Linux的机房终端安全重构方案》
  • JavaWeb-Servlet总结及JSP
  • 《黑神话:悟空》Xbox版本性能模式画质分析
  • 支持向量机:从理论到实践
  • 软件体系结构——发展脉络
  • 【C++】队列queue的使用
  • 对网络通信领域的“活化石”与“瑞士军刀”—— `telnet`
  • 迭代器和生成器的区别与联系
  • 如何解决 pip install 安装报错 ModuleNotFoundError: No module named ‘numpy’ 问题
  • ffplay数据结构分析
  • 我爱学算法之—— 位运算(上)
  • LeetCode 分类刷题:2187. 完成旅途的最少时间
  • Redis持久化之AOF:日志记录的艺术,数据安全保障详解
  • 应急响应-事件处理学习大纲(1)
  • 基于「YOLO目标检测 + 多模态AI分析」的遥感影像目标检测分析系统(vue+flask+数据集+模型训练)
  • 【Android】Viewpager2实现无限轮播图