【ubuntu】linux开机自启动

目录

开机自启动:

/etc/rc.loacl

system V

使用/etc/rc*.d/系统运行优先级

遇到的问题:

1. Linux 系统启动阶段概述

方法1:/etc/rc5.d/ 脚本延时+日志

方法二:使用 udev 规则来触发脚本执行


开机自启动:

/etc/rc.loacl

有的系统没有这个文件

直接把执行脚本的命令写到这个文件末尾即可。

system V

查看该linux系统是否支持system V

systemd --version

编写开机启动需要执行的mydemo.sh:

#!/bin/bashdate >> /root/date.txt

 进入下面目录

cd /etc/systemd/system

创建xxx.service文件 

vim myauto.service

 myauto.service内容:

[Unit]Description=Run a Custom Script at StartupAfter=default.target[Service]ExecStart=/root/mydemo.sh[Install]WantedBy=default.target

 加载到硬盘上:

systemctl daemon-reload#设置自启动
#设置myauto.service服务自启动:
sudo systemctl enable myauto.service

然后会自动创建一个软连接。手动测试一下:

#【1】
#开启myauto.service服务:
sudo systemctl start myauto.service#【2】
reboot

注意:shell脚本的 #!/bin/bash 或者 #!/bin/sh 一定不能省略。否则服务不能启动,但是单独运行脚本是可以的。

下图时自动创建的一个软连接:

使用/etc/rc*.d/系统运行优先级

c0.d 到 rc6.d 分别对应系统运行级别的0到6:
rc0.d:关机。
rc1.d:单用户模式。
rc2.d 至 rc5.d:多用户模式,在大多数Linux发行版中,级别3或5用于图形界面启动(取决于具体的配置)。
rc6.d:重启。
rcS.d:用于系统启动时的特殊初始化过程。

查看当前系统运行在哪个级别上面

runlevel

 

把脚本放在/etc/init.d/下:

在对应的rcN.d下创建软连接:(当然也可以在rcS.d中创建软连接。)当自启动时,运行级别时N时,就会执行rcN.d下面的脚本。

注意软连接名字最好是:S[num]<service>. 因为自启动时,是按照S后面的数字来顺序执行的。

ln -s /etc/init.d/mydemo S02mydemo

自启动运行流程:

遇到的问题:

把pwm初始化的脚本放到/etc/rc5.d下面,不能自启动,猜测pwm硬件没有初始化,就执行了这个脚本。

rcN.d 脚本运行时,某些用户空间工具或服务可能尚未启动(如 udev 或 sysfs 文件系统未完全挂载)。

所以自启动脚本要是有操作硬件方面的,不推荐使用rcN.d的方式添加自启动脚本。

1. Linux 系统启动阶段概述

Linux 系统的启动过程可以分为以下几个主要阶段(以现代系统为例):

  • 内核加载和初始化

    • 内核解压缩并加载硬件驱动。
    • 初始化核心子系统(如内存管理、设备树解析、文件系统等)。
    • 加载硬件驱动(包括 PWM 驱动)。
  • 用户空间初始化

    • 内核启动第一个用户空间进程(通常是 init 或 systemd)。
    • 执行系统初始化脚本(如 SysVinit 的 rcN.d 脚本或 Systemd 的服务单元)。
  • 运行级别切换和服务启动

    • 根据默认运行级别,执行对应的启动脚本(如 rcN.d 中的脚本)。
    • 启动用户定义的服务和应用程序。
dmesg | grep -i pwm        //查看内核加载时,pwm硬件的加载情况
dmesg | grep -i backlight

方法1:/etc/rc5.d/ 脚本延时+日志

依旧使用/etc/rc5.d/的方法执行自启动文件。

在脚本的最前面,加延时,并设置一个日志文件。

#!/bin/bash
sleep 5echo "Starting PWM initialization at $(date)" >> /var/log/pwm-init.log

方法二:使用 udev 规则来触发脚本执行

udev 是 Linux 系统中的设备管理器,它在系统启动时以及运行过程中动态管理设备节点。udev 规则允许用户自定义如何处理硬件设备的识别、命名和权限设置等。通过编写 udev 规则文件,可以实现对特定硬件设备的自动化配置,例如自动挂载存储设备、加载驱动程序或执行脚本。

这样,当 febf0010.pwm 设备被添加到内核时,脚本会自动执行。

  • 在基于设备树(Device Tree)的系统中,febf0010 通常是 PWM 控制器的基地址(Base Address),定义在设备树中。
ls -l /sys/class/pwm/            //查看pwm类
ls /sys/bus/platform/devices/    //查看平台所有设备

udev规则添加: 

/etc/udev/rules.d/99-pwm.rules    //添加udev规则

 99-pwm.rules 内容如下:


ACTION=="add", SUBSYSTEM=="platform", KERNEL=="febf0010.pwm", RUN+="/path/to/your/script.sh"

重启结果:

左边是/var/log/pwm_init.log日志,右边是/etc/init.d/init_pwm.sh脚本。

所以,自启动后,pwm口被识别到后,就会自动执行/etc/init.d/init_pwm.sh脚本,该脚本的日志会输出到/var/log/pwm_init.log里面。

参考:

linux下添加简单的开机自启动脚本 - 与f - 博客园

关于Ubuntu运行级别、开机启动脚本的说明 - 追梦的飞飞 - 博客园

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/77346.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python深度学习基础——深度神经网络(DNN)(PyTorch)

张量 数组与张量 PyTorch 作为当前首屈一指的深度学习库&#xff0c;其将 NumPy 数组的语法尽数吸收&#xff0c;作为自己处理张量的基本语法&#xff0c;且运算速度从使用 CPU 的数组进步到使用 GPU 的张量。 NumPy 和 PyTorch 的基础语法几乎一致&#xff0c;具体表现为&am…

光伏产品研发项目如何降本增效?8Manage 项目管理软件在复合材料制造的应用

在复合材料制造领域&#xff0c;特别是光伏PECVD石墨舟和燃料电池石墨双极板等高精尖产品的研发过程中&#xff0c;高效的项目管理直接决定了产品开发周期、质量和市场竞争力。然而&#xff0c;许多企业在项目立项、进度跟踪、资源分配和质量控制等环节面临挑战。 针对这些痛点…

linux的glib库使用

glib常用接口使用 1. glib介绍2. glib命令安装3. 获取glib的版本信息和兼容信息4. glib使用例子4.1 链表例子4.2 哈希表例子4.3 使用面向对象例子 1. glib介绍 广泛应用于桌面环境、嵌入式系统、GNOME等项目中。它提供了完整的面向对象编程模型&#xff08;GObject&#xff09…

vs2022使用git方法

1、创建git 2、在cmd下执行 git push -f origin master &#xff0c;会把本地代码全部推送到远程&#xff0c;同时会覆盖远程代码。 3、需要设置【Git全局设置】&#xff0c;修改的代码才会显示可以提交&#xff0c;否则是灰色的不能提交。 4、创建的分支&#xff0c;只要点击…

SAP ECCS 标准报表 切换为EXCEL电子表格模式

在解决《SAP ECCS标准报表在报表中不存在特征CG细分期间 消息号 GK715报错分析》问题过程中通过DEBUG方式参照测试环境补录数据后&#xff0c;不再报GK715错误&#xff0c;此时用户要的很急&#xff0c;要出季报。要求先把数据导出供其分析出季报。 采用导出列表方式&#xff…

基于 Python 和 OpenCV 技术的疲劳驾驶检测系统(2.0 全新升级,附源码)

大家好&#xff0c;我是徐师兄&#xff0c;一个有着7年大厂经验的程序员&#xff0c;也是一名热衷于分享干货的技术爱好者。平时我在 CSDN、掘金、华为云、阿里云和 InfoQ 等平台分享我的心得体会。 &#x1f345;文末获取源码联系&#x1f345; 2025年最全的计算机软件毕业设计…

MATLAB项目实战(一)

题目&#xff1a; 某公司有6个建筑工地要开工&#xff0c;每个工地的位置&#xff08;用平面坐标系a&#xff0c;b表示&#xff0c;距离单位&#xff1a;km&#xff09;及水泥日用量d(t)由下表给出&#xff0e;目前有两个临时料场位于A(5,1)&#xff0c;B(2,7)&#xff0c;日储…

[250417] Fedora 42 正式发布,搭载 Linux 6.14 内核和 GNOME 48 桌面环境

目录 Fedora 42 正式发布全新的 Anaconda Web UI 安装程序KDE Plasma 荣升官方版本 (Edition)全新 Fedora COSMIC Spin 登场GNOME 48 桌面环境更新其他重要改进获取与升级 Fedora 42 正式发布 Fedora Linux 42 现已正式发布&#xff01;此版本基于最新的 Linux 内核 6.14 构建…

开源技术如何助力中小企业实现财务管理自主化?

中小企业的数字化困境与开源机遇 国际数据公司&#xff08;IDC&#xff09;研究显示&#xff0c;全球67%的中小企业因高昂的软件成本和僵化的功能设计&#xff0c;未能有效推进数字化转型。传统商业软件常面临三大矛盾&#xff1a; 功能冗余与核心需求缺失&#xff1a;标准化系…

JVM考古现场(二十二):降维打击·用二向箔优化内存模型

"警报&#xff01;三维堆内存正在经历二维化坍缩&#xff01;" 我腰间的玄铁令突然震动&#xff0c;在蜀山剑派的量子剑阵中投射出诡异的曼德博分形——这是三体文明发动降维打击的铁证&#xff01; 楔子&#xff1a;二向箔奇点降临 昆仑镜监控日志&#xff1a; // …

详细解释MCP项目中安装命令 bunx 和 npx区别

详细解释 bunx 和 npx 1. bunx bunx 是 Bun 的一个命令行工具&#xff0c;用于自动安装和运行来自 npm 的包。它是 Bun 生态系统中类似于 npx 或 yarn dlx 的工具。以下是 bunx 的主要特点和使用方法&#xff1a; 自动安装和运行&#xff1a; bunx 会自动从 npm 安装所需的包…

Docker详细使用

Docker详细使用 文章目录 Docker详细使用使用场景docker安装常用命令帮助启动类命令镜像命令网络命令容器命令compose&#xff08;服务编排&#xff09; 功能列表存储&#xff08;挂载本地&#xff09;介绍使用⽬录挂载卷映射 网络介绍使用 DockerfileCompose介绍使用 使用场景…

Ubuntu24.04搭建ESP8266_RTOS_SDK V3.4开发环境

【本文发布于https://blog.csdn.net/Stack_/article/details/147194686&#xff0c;未经允许不得转载&#xff0c;转载须注明出处】 需要有Linux使用基础&#xff0c;自行准备 1、VM17 Pro &#xff08;自行搜索教程安装&#xff09; 2、ubuntu-24.04-desktop-amd64 &#xff0…

微信小程序实现table样式,自带合并行合并列

微信小程序在代码编写过程好像不支持原生table的使用&#xff0c;在开发过程中偶尔又得需要拿table来展示。 1.table效果展示 1.wxml <view class"table-container"><view class"table"><view class"table-row"><view cla…

前端面试-React篇

核心概念与虚拟DOM React的虚拟DOM如何工作&#xff1f;Diff算法优化策略是什么&#xff1f;JSX的本质是什么&#xff1f;与模板引擎&#xff08;如Vue&#xff09;有何区别&#xff1f;React组件生命周期&#xff08;类组件&#xff09;的关键阶段是什么&#xff1f;受控组件…

LFM调制信号分类与检测识别

LFM调制信号分类与检测识别 LFM调制信号分类识别AlexNet网络识别InceptionV3、ResNet-18、ResNet-50网络识别 LFM调制信号检测识别 LFM调制信号分类识别 支持识别LFM信号、间歇采样干扰(ISRJ)、灵巧噪声干扰(SNJ)、扫频干扰(SJ)、瞄准干扰(AJ)、阻塞干扰(BJ)、密集假目标干扰(…

Linux 常用命令总结

Linux 常用命令总结 Linux 命令行是系统管理和开发的核心工具&#xff0c;掌握常用命令可以极大提升效率。本文全面总结 Linux 常用命令&#xff0c;涵盖文件操作、进程管理、网络管理、系统监控、用户管理、软件安装等多个方面&#xff0c;适合初学者和高级用户参考。 1. 文件…

RPCRT4!OSF_CCONNECTION::OSF_CCONNECTION函数分析之创建一个RPCRT4!OSF_CCALL--RPC源代码分析

RPCRT4!OSF_CCONNECTION::OSF_CCONNECTION函数分析之创建一个RPCRT4!OSF_CCALL 第一部分&#xff1a; 1: kd> p RPCRT4!OSF_CCONNECTION::OSF_CCONNECTION0x167: 001b:77bf6957 393dec35c877 cmp dword ptr [RPCRT4!gfRPCVerifierEnabled (77c835ec)],edi 1: kd> …

量化视角:比特币美债黄金三角博弈的DeepSeek推演

【AI分析】近期全球金融市场呈现罕见的三重分化态势&#xff1a;比特币单日振幅超35%、美债收益率创年内最大单日波动、黄金价格突破3271美元/盎司&#xff0c;刷新有记录以来的最高价。这种极端行情背后&#xff0c;折射出AI模型捕捉到的市场结构性矛盾与资金流动新逻辑。 一…

markdown导出PDF,PDF生成目录

1、vscode中安装markdown插件&#xff0c;将编辑的文件导出PDF。 2、安装PDF Guru Anki软件 百度网盘&#xff1a;通过网盘分享的文件&#xff1a;PDFGuruAnki 链接: https://pan.baidu.com/s/1nU6avM7NUowhEn1FNZQKkA 提取码: aues PDF中不同的标题需要通过矩形框标注差异&a…