Ubuntu22.04开机自启动服务终极指南:从systemd到rc.local的完整配置流程

ubuntu 22.04启用rc.local来实现开机启动调用某些脚本 5、之后就可以直接在/etc/rc.local文件中添加可执行的脚本文件,开机调用这个可执行的脚本文件。Ubuntu 22.04 中rc.local 服务并没有启用,手动配置的步骤如下。4、对rc-local.service服务配置开机启动,并且启动它。1、检查rc-local.service服务是否已经配置开机启动。3、检查rc-local.service服务是否已经配置开机启动。2、rc-local.service文件增加2行。 阅读详情

Ubuntu 22.04 开机自启动服务终极指南:从systemd到rc.local的完整配置流程

最近在帮几个朋友处理他们的Ubuntu 22.04服务器时,我发现一个挺有意思的现象:很多从老版本升级上来的开发者,还在执着地寻找/etc/rc.local文件,试图用那个“经典”的方法来设置开机启动。结果当然是碰壁——文件要么不存在,要么设置了也不执行。这其实反映了一个技术演进中的典型问题:我们习惯了某种工作流,但当底层架构发生根本性变化时,如果认知没有同步更新,就会陷入无效的折腾。

Ubuntu 22.04作为一款长期支持版本,其服务管理已经完全拥抱了systemd这套现代化的初始化系统。rc.local那种简单粗暴的脚本方式,虽然在某些场景下仍有其便捷性,但已不再是系统推荐的首选。不过,有意思的是,社区和用户的需求是多样的,总有人怀念那种“把脚本扔进去就行”的直白。所以,今天我想从一个实际运维者的角度,跟你彻底聊聊在Ubuntu 22.04上搞定开机自启动的两种核心路径:拥抱主流的systemd服务单元配置,以及让“复古”的rc.local重新焕发生机。无论你是管理生产环境服务器的运维工程师,还是为自己开发环境搭建自动化流程的开发者,这篇文章都会给你一套清晰、可落地,并且知其所以然的解决方案。

1. 理解基石:Ubuntu 22.04的服务管理架构变迁

在直接动手写配置之前,我觉得有必要花点时间,搞清楚我们面对的究竟是一个怎样的系统环境。很多配置失败,根源在于对底层机制的一知半解。

Ubuntu 自 15.04 版本开始,就用 systemd 全面取代了传统的 SysV init 系统。到了22.04,systemd的地位已经非常稳固,它不仅仅是启动进程,更是一个管理系统资源、服务依赖、日志和状态的庞大框架。你可以把它想象成整个操作系统服务的“总管家”和“调度中心”。

那么,经典的/etc/rc.local脚本去哪了呢?在SysV init时代,系统在启动的最后阶段会执行这个脚本,用户可以把任何想在开机时运行的命令塞进去,非常灵活。但这种方式缺乏管理性:没有服务状态查看、没有依赖关系控制、没有标准的日志输出、也无法方便地重启或停止。systemd的设计哲学是一切皆服务,即使是临时脚本,也最好包装成一个服务来管理,这样才能享受完整的生命周期管理能力。

因此,在Ubuntu 22.04上,rc.local默认是不生效的。系统甚至没有创建这个文件。但这不代表这条路被彻底堵死,systemd提供了高度的兼容性和可配置性,我们可以通过“激活”一个特定的systemd服务,来重新启用rc.local的执行。这本质上,是把一个传统脚本,纳入了现代服务管理体系的监管之下。

理解了这个背景,我们就能明白,所谓的“两种方式”,其实可以看作是两种思维模式:

  1. 现代服务模式 (推荐):主动将你的脚本或应用,按照systemd的规范,定义成一个完整的服务单元(.service文件)。这是主流和未来的方向。
  2. 传统脚本模式 (兼容):启用systemd提供的rc-local.service,让它去执行我们熟悉的/etc/rc.local脚本。这更像是一种对旧习惯的迁就和快速补丁。

对于生产环境或需要精细管理的服务,我强烈建议采用第一种方式。对于个人开发机上一个简单的环境变量设置或目录挂载,第二种方式可能更快捷。接下来,我们就深入这两种方式的具体实现。

2. 主流之道:使用systemd创建自定义服务

这是最规范、功能最强大的方法。我们将你的脚本(比如一个Python应用、一个Node.js服务,或者一个Shell监控脚本)封装成一个systemd服务。

2.1 服务单元文件剖析与创建

假设我们有一个位于/opt/myapp/start.sh的启动脚本,它负责启动一个自定义的应用程序。

首先,我们需要在/etc/systemd/system/目录下创建一个服务单元文件。这个目录存放系统管理员定义的本地服务,优先级高于系统自带的/lib/systemd/system/。

sudo vim /etc/systemd/system/myapp.service

现在,我们来逐部分解读这个文件的内容应该如何编写。一个完整的服务单元文件通常由[Unit]、[Service]和[Install]三个区块组成。

[Unit]
Description=My Custom Application Service
Documentation=https://example.com/myapp/docs
After=network.target nss-lookup.target
Wants=network.target

[Service]
Type=simple
User=appuser
Group=appuser
WorkingDirectory=/opt/myapp
ExecStart=/bin/bash /opt/myapp/start.sh
Restart=on-failure
RestartSec=10s
StandardOutput=journal
StandardError=journal
Environment="NODE_ENV=production"
EnvironmentFile=/etc/default/myapp

[Install]
WantedBy=multi-user.target

我们来拆解一下关键指令:

Ubuntu22.04利用systemd实现自定义服务开机自启动 本文详细介绍了在Ubuntu22.04系统中使用systemd配置自定义服务实现开机自启动的完整流程。从systemd的优势分析、脚本准备、服务单元文件创建到实战管理和高级配置技巧,帮助用户高效管理Linux服务,替代传统的rc.local方式。 阅读详情

相关推荐

Ubuntu22.04开机脚本执行方案与systemd服务配置详解

Linux系统启动时自动执行脚本是运维中的常见需求,其核心机制随着初始化系统演进经历了从SysVinit到systemd的技术变迁。systemd作为现代Linux标准初始化系统,通过单元文件实现服务管理,提供依赖控制、日志收集等企业级特性。在Ubuntu22.04等新版系统中,掌握systemd服务配置成为必备技能,包括创建.service文件、设置启动顺序、处理环境变量等关键技术点。对于需要兼容传统方案的情况,可通过rc-local.service模拟旧版行为,而crontab的@reboot则适合轻量

weixin_42550052的博客 333

ubuntu22 设置开机自动运行程序

是 Ubuntu 22.04 的默认启动系统和服务管理器。你可以创建一个 my_service.service。将/path/to/your/script.py替换为你要执行程序的路径。执行后,打开新的shell,输入下列命令,检查9999端口是否开启了侦听。当看到了127.0.0.1:9999这一行内容,说明以上程序成功执行。文件来定义你的服务,并将其放置在 /etc/systemd/system/验证方式,与上面程序运行的验证方式一致,此处省略。这将在系统启动时自动启动你的服务。

lstef的博客 2133

Ubuntu 22.04/24.04 rc.local 服务配置:3步修复 systemd 兼容性问题

本文详细介绍了在Ubuntu 22.04/24.04系统中修复rc.local开机自启动脚本的3步解决方案,解决systemd兼容性问题。通过重建服务配置、创建规范脚本和激活验证服务,确保传统启动脚本在现代系统中可靠运行,同时提供高级技巧和替代方案评估。

weixin_33552698的博客 305

Ubuntu22.04开机脚本配置与systemd服务管理

Linux系统启动管理是现代操作系统运维的核心环节,systemd作为新一代初始化系统,通过单元文件(unit)实现了服务管理的标准化与精细化。其原理是基于并行启动和依赖关系管理,显著提升了系统启动效率。在Ubuntu22.04等现代发行版中,传统的rc.local机制已被systemd服务取代,这要求开发者掌握服务单元文件的编写与调试技巧。实际应用中,开机脚本常用于自动化部署、服务启动和环境初始化等场景,而通过systemctl和journalctl工具可以实现完善的服务状态监控与日志追踪。针对Ubunt

weixin_33416697的博客 215

Ubuntu18.04 systemd开机自启

Ubuntu18.04不再使用initd管理系统,改用systemd,为了像以前一样,在/etc/rc.local中设置开机启动程序,需要以下几步: 1、systemd默认读取/etc/systemd/system下的配置文件,该目录下的文件会链接/lib/systemd/system/下的文件。一般系统安装完/lib/systemd/system/下会有rc-local.service文件,即我们需要的配置文件。 创建软链接: 1 ln -fs /lib/systemd

砍柴喂马 627

避坑指南:Ubuntu22.04开机自启动服务配置中的5个常见错误及解决方法

本文详细解析了Ubuntu22.04开机自启动服务配置中的5个常见错误及解决方法,涵盖systemd服务文件配置、脚本执行环境、服务依赖管理等关键问题。特别针对ubuntu22.04系统特性,提供了实用的调试技巧和最佳实践,帮助用户有效避免配置陷阱,确保服务稳定自启动。

weixin_29295541的博客 142

基于STM32和MPU6050的手势控制小车设计与实现

MPU6050传感器:用于检测手势变化,采集加速度和陀螺仪数据。STM32微控制器:处理MPU6050传感器的数据,根据手势变化控制小车的运动。电机驱动模块:接收来自STM32的控制信号,驱动小车的电机,实现小车的前进、后退、左转和右转。小车底盘:作为整个系统的机械部分,提供移动平台。MPU6050是一款集成了3轴加速度计和3轴陀螺仪的传感器,具有高精度、低功耗和小体积等特点。它通过I2C接口与微控制器通信,可以实时采集加速度和角速度数据,广泛应用于运动检测、姿态控制和手势识别等领域。

m0_57781768的博客 2310

PLC编程进阶:结构体(UDT)与功能块(FB)的模块化实践指南

本文深入探讨了PLC编程中实现模块化的核心方法,重点解析了结构体(UDT)与功能块(FB)的协同应用。通过将零散数据封装为UDT,并将控制逻辑打包为可复用的FB,能够构建出结构清晰、易于维护和调试的PLC程序。文章结合拧紧枪、电机控制等实战案例,提供了从设计原则到分层架构的完整实践指南,旨在帮助工程师将混乱的‘面条式’代码改造为高效的‘正规军’。

s3t4u的博客 222

LightGBM处理类别特征和缺失值有多省心?一个真实业务数据案例带你上手

本文通过真实电商数据案例,详细解析了LightGBM如何高效处理类别特征和缺失值。相比传统方法,LightGBM仅需一行代码即可自动处理高基数类别特征和缺失值,大幅提升模型训练效率和预测准确度,特别适合业务场景中的脏数据处理。

weixin_30689307的博客 460

手把手教你用Simulink搭建BPSK调制解调系统(附完整参数设置与波形分析)

本文详细指导如何使用Simulink搭建BPSK调制解调系统,涵盖从理论到实践的全流程,包括参数设置、模块连接和波形分析。重点解析调制解调中的关键参数和常见问题,如带通滤波器设计、载波同步等,帮助读者快速掌握BPSK系统的实现与调试技巧。

weixin_27741699的博客 427

《QGIS快速入门与应用基础》151:批量属性值赋值(字段计算器)

本文介绍了QGIS中字段计算器的批量属性值赋值方法,重点讲解了简单赋值(统一值和递增序列)的操作步骤与表达式应用。文章首先强调数据备份、字段类型确认等必要前提,随后详细解析字段计算器的界面功能分区和打开方式。通过具体场景示例,展示了如何为图层统一赋值固定值或生成连续编号序列,并提供了文本、数字、日期等不同字段类型的表达式模板。文中特别提醒新手优先创建新字段而非直接更新现有字段,以避免数据丢失风险,同时推荐使用$id和rownum()函数实现基础序列生成。该教程适合GIS初学者快速掌握批量属性编辑的核心技能。

LuckyHanMo的博客 491

ReAct 智能体 Agent:架构解析与实践拓展

ReAct 智能体 Agent 凭借其推理与行动协同的独特架构,在众多人工智能应用场景中展现出巨大的潜力。从智能办公到教育辅导,从智能家居到工业物联网,ReAct 智能体通过精准推理和高效行动,为用户提供了更加智能、便捷的服务体验。然而,在实际应用过程中,仍面临工具调用安全、模型持续学习、多智能体协作管理以及性能优化等多方面的挑战。通过合理的策略和技术创新,如强化工具审核机制、构建持续学习框架、设计高效协作协议和采用性能优化手段,我们有望逐步克服这些挑战,进一步提升 ReAct 智能体的性能和可靠性。

加入“Super Entity”,与全能开发团队共探AI智能体与数字人项目,开启前沿技术之旅。 1689

Python 3.13.7 (64-bit)安装弹窗提示:Setup failed:0x80070643 - 安装时发生严重错误...如何解决?

🏆本文收录于 《全栈Bug调优(实战版)》 专栏,该专栏专注于分享我在真实项目开发中遇到的各类疑难Bug及其深层成因,并系统提供高效、可复现的解决思路和实操方案。无论你是刚入行的新手开发者,还是拥有多年项目经验的资深工程师,本专栏都将为你提供一条系统化、高质量的问题排查与优化路径,助力你加速成长,攻克技术壁垒,迈向技术价值最大化与职业发展的更高峰🚀!

**My Coding Family** 2118

AIoT 在线工程实训平台案例——智能家居

AIoT 在线工程实训平台案例——智能家居的操作步骤

m0_53608652的博客 1432

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

上一篇: Verilog仿真避坑实录:TD生成Testbench与Modelsim联调的那些坑
下一篇: STM32CubeIDE实战演练:高效仿真调试技巧与问题定位
github5actions
博客等级 码龄1天 0粉丝 1824原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值