news 2026/4/23 8:32:06

5分钟学会rc.local配置,配合测试脚本快速上手

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
5分钟学会rc.local配置,配合测试脚本快速上手

5分钟学会rc.local配置,配合测试脚本快速上手

1. 引言:为什么需要开机自启动脚本?

在嵌入式设备、工控机或服务器运维场景中,经常需要系统在开机后自动执行某些初始化任务,例如启动监控程序、挂载文件系统、运行健康检查脚本等。Linux 提供了多种实现开机自启动的方式,其中rc.local是最经典、兼容性最好且无需复杂配置的一种方法。

本文聚焦于rc.local方式的完整实践流程,结合一个实际的测试脚本,带你从零开始完成配置、调试与验证全过程,确保5分钟内即可上手并成功运行。


2. 测试脚本准备

我们先创建一个简单的 Bash 脚本用于测试,验证其是否能在系统启动时被正确执行。

2.1 创建测试脚本

#!/bin/bash # test.sh - 开机启动测试脚本 cd /home/Desktop/ ls echo "OK!" >> /home/Desktop/rc_local_test.log date >> /home/Desktop/rc_local_test.log exit 0

说明

  • 将当前目录切换到 Desktop。
  • 执行ls列出文件。
  • 向日志文件写入标记和时间,便于后续验证执行结果。
  • 使用绝对路径更稳妥(如/bin/ls),但此处为简化示例使用相对调用。

2.2 设置脚本权限

将脚本保存为/home/Desktop/test.sh,并赋予可执行权限:

chmod +x /home/Desktop/test.sh

你可以手动运行一次以确认功能正常:

/home/Desktop/test.sh cat /home/Desktop/rc_local_test.log

预期输出类似:

OK! Mon Apr 5 10:00:00 CST 2025

3. 配置 rc.local 实现开机自启动

3.1 确认 rc.local 文件存在

大多数现代 Linux 发行版(包括 Ubuntu 18.04+)默认不再启用rc.local,需手动启用。

首先检查是否存在该文件:

sudo ls /etc/rc.local

如果不存在,请创建:

sudo touch /etc/rc.local

3.2 编辑 rc.local 内容

使用文本编辑器打开:

sudo nano /etc/rc.local

填入以下内容:

#!/bin/sh -e # # rc.local # 自定义开机执行脚本 # 由 systemd 兼容服务调用 # # 添加你的命令(注意使用绝对路径更可靠) su - $USER -c "cd /home/Desktop && /bin/bash ./test.sh" exit 0

关键点解析

  • #!/bin/sh -e:表示使用 sh 执行,-e表示遇到错误立即退出。
  • su - $USER -c:因为rc.local在用户登录前运行,图形环境未加载,直接执行桌面路径脚本可能失败。通过su模拟用户上下文是常见解决方案。
  • 推荐使用全路径:如/usr/bin/bash/bin/ls等,避免 PATH 不全导致命令找不到。
  • exit 0必须保留,否则可能导致启动卡顿。

3.3 设置 rc.local 可执行权限

sudo chmod +x /etc/rc.local

4. 启用 rc.local 服务(Ubuntu 18.04+ 特别步骤)

由于新版 Ubuntu 使用 systemd,rc.local不再默认启用,必须显式激活对应的服务单元。

4.1 检查 rc-local.service 是否存在

systemctl status rc-local

若提示“not found”,则需要手动创建服务文件。

4.2 创建 systemd 服务单元(如不存在)

sudo nano /etc/systemd/system/rc-local.service

写入以下内容:

[Unit] Description=/etc/rc.local Compatibility ConditionPathExists=/etc/rc.local [Service] Type=forking ExecStart=/etc/rc.local start TimeoutSec=0 StandardOutput=tty RemainAfterExit=yes SysVStartPriority=99 [Install] WantedBy=multi-user.target

4.3 启用并启动服务

sudo systemctl enable rc-local.service sudo systemctl start rc-local.service

查看状态确认是否成功:

sudo systemctl status rc-local.service

正常输出应包含:

active (exited) since ...

5. 验证开机自启动效果

5.1 重启系统

sudo reboot

等待系统完全启动后,登录账户。

5.2 检查日志输出

查看 Desktop 目录下的日志文件:

cat /home/Desktop/rc_local_test.log

如果看到类似内容:

OK! Mon Apr 5 10:05:23 CST 2025

说明脚本已成功在开机时执行!

此外,也可通过以下命令查看rc.local最近一次执行情况:

journalctl -u rc-local.service --since "1 hour ago"

你可能会看到如下信息:

Started /etc/rc.local Compatibility. /etc/rc.local start exited with status 'success'

6. 常见问题与解决方案

6.1 脚本未执行?检查这些地方!

问题现象原因分析解决方案
日志文件未生成路径错误或权限不足使用sudo -u username明确指定用户执行
提示 command not foundPATH 环境变量缺失改用绝对路径调用命令(如/usr/bin/ls
rc.local 服务 failed文件无执行权限或缺少 exit 0chmod +x /etc/rc.local并确保末尾有exit 0
图形界面相关命令无效X Server 尚未启动若需 GUI 操作,建议改用 GNOME 自启动或延时执行

6.2 如何添加延迟执行(适用于依赖桌面环境的场景)?

若脚本涉及 GUI 或必须等待桌面就绪,可在rc.local中加入延时:

(sleep 15; su - $USER -c "/home/Desktop/test.sh") &

后台延时执行,避免阻塞系统启动。


7. 对比其他开机启动方式

方法优点缺点适用场景
rc.local兼容性强、配置简单、跨发行版通用Ubuntu 18+ 需手动启用服务通用初始化脚本
systemd service精确控制依赖、日志集成好学习成本较高复杂服务管理
crontab @reboot用户级易配置执行时机较晚用户进程启动
gnome-session-properties图形化操作方便仅限 GNOME 桌面用户桌面应用自启
/etc/init.d + update-rc.dSysV 遗留方案,支持优先级设置已逐步淘汰老旧系统维护

推荐选择:对于轻量级、非服务型脚本,rc.local依然是最简洁高效的方案。


8. 总结

rc.local虽然是一个“古老”的机制,但在现代 Linux 系统中依然具有极高的实用价值,尤其适合快速部署一次性初始化任务或调试用途。

通过本文的学习,你应该已经掌握了:

  1. 如何编写并测试一个开机启动脚本;
  2. 如何正确配置/etc/rc.local并使其在新版本 Ubuntu 上生效;
  3. 如何排查常见执行失败问题;
  4. 与其他启动方式的对比选型思路。

现在你可以自信地将任何初始化逻辑封装成脚本,交由rc.local在每次开机时自动执行。


获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 14:22:06

OrCAD下载指南:Cadence Allegro集成环境完整安装说明

从零搭建专业PCB设计平台:OrCAD与Allegro集成环境实战部署全记录 你是不是也曾在项目启动前卡在第一步—— 软件装不上 ? 明明下载了安装包,点击 setup.exe 却弹出一堆错误;好不容易装完,一打开OrCAD Capture就提…

作者头像 李华
网站建设 2026/4/12 7:22:48

学术论文写作必备的7款AI工具操作流程详解及实例展示说明

工具核心特点速览 工具名称 核心优势 适用场景 数据支撑 aibiye 全流程覆盖降重优化 从开题到答辩的一站式需求 支持20万字长文逻辑连贯 aicheck 院校规范适配模板化输出 国内本硕博论文框架搭建 覆盖90%高校格式要求 秒篇 3分钟文献综述生成 紧急补文献章节 知…

作者头像 李华
网站建设 2026/3/30 10:24:04

麦橘超然Flux部署踩坑记:那些文档没说的小细节

麦橘超然Flux部署踩坑记:那些文档没说的小细节 1. 引言:从“能跑”到“稳跑”的工程化思考 在当前 AI 绘画应用快速落地的背景下,麦橘超然 - Flux 离线图像生成控制台凭借其基于 DiffSynth-Studio 构建的轻量化架构和 float8 量化技术&…

作者头像 李华
网站建设 2026/4/15 9:33:06

如何监控TTS质量?CosyVoice-300M Lite MOS评分实践

如何监控TTS质量?CosyVoice-300M Lite MOS评分实践 1. 引言:轻量级TTS服务的质量挑战 随着语音合成技术(Text-to-Speech, TTS)在智能客服、有声读物、语音助手等场景的广泛应用,模型生成语音的自然度与可懂度成为影响…

作者头像 李华
网站建设 2026/4/18 11:48:45

Qwen3-VL工业检测应用:缺陷识别自动化系统部署详细步骤

Qwen3-VL工业检测应用:缺陷识别自动化系统部署详细步骤 1. 引言 在现代制造业中,产品质量控制是保障生产效率与客户满意度的核心环节。传统的人工视觉检测方式存在主观性强、效率低、成本高等问题,难以满足高精度、高速度的工业场景需求。随…

作者头像 李华
网站建设 2026/4/19 4:27:54

入门Web安全(非常详细)零基础入门到精通,收藏这一篇就够了

每一个已经入门一个领域的人都有自己的一套入门方法,在无人指点的情况下,通过自己的摸索加上努力的沉淀逐渐成为一个领域的专家,从入门到成为专家也只是时间的问题,如果有高人指点,那么入门的时间会大大缩短&#xff0…

作者头像 李华