news 2026/4/22 20:45:21

5分钟搞定Linux开机自启,测试脚本一键部署实测

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
5分钟搞定Linux开机自启,测试脚本一键部署实测

5分钟搞定Linux开机自启,测试脚本一键部署实测

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

在嵌入式设备、服务器运维和自动化测试场景中,系统开机后自动执行特定脚本或程序是一项基础但关键的需求。无论是树莓派上运行环境监测程序,还是云服务器自动拉起服务进程,手动干预不仅效率低下,还容易因人为疏忽导致服务中断。

本文以“测试开机启动脚本”镜像为实践载体,结合 Ubuntu 虚拟机与树莓派 4B 的真实案例,手把手带你掌握 Linux 系统下主流的开机自启方案。全程操作控制在5分钟内可完成,适合快速验证和批量部署。

目标读者将通过本文:

  • ✅ 理解三种主流开机自启机制的核心差异
  • ✅ 掌握rc.localsystemd的完整配置流程
  • ✅ 完成一个可验证的开机打印脚本部署
  • ✅ 避免常见卡死系统、权限不足等典型问题

2. Linux 开机自启机制概览

Linux 系统的启动过程由初始化系统(init system)管理,目前主流发行版普遍采用systemd作为默认 init 系统。不同的自启方式对应不同阶段的系统加载时机和权限模型。

方式适用系统执行时机权限级别是否推荐
rc.local多数传统发行版所有服务启动后root⚠️ 兼容性使用
systemdsystemd 系统(Ubuntu 16+、CentOS 7+)按依赖顺序启动可配置用户/系统级✅ 推荐
init.dSysVinit 系统启动早期root❌ 已淘汰

核心建议:优先使用systemd实现服务化管理;对于简单调试任务,可临时启用rc.local快速验证。


3. 方法一:通过 rc.local 实现开机执行(兼容模式)

尽管 Ubuntu 18.04 及以后版本默认禁用了/etc/rc.local,但我们可以通过恢复其 systemd 单元文件来重新启用这一经典方式,特别适合快速测试类脚本。

3.1 检查并修复 rc-local.service

首先确认系统是否存在原始 service 文件:

ls /lib/systemd/system | grep rc-local

若输出包含rc-local.service,则继续编辑该文件:

sudo chmod 644 /lib/systemd/system/rc-local.service sudo vim /lib/systemd/system/rc-local.service

确保内容包含[Install]段落,否则添加如下配置:

[Install] WantedBy=multi-user.target Alias=rc-local.service

3.2 创建并配置 /etc/rc.local 脚本

创建脚本文件:

sudo touch /etc/rc.local sudo chmod +x /etc/rc.local sudo vim /etc/rc.local

写入以下测试内容(注意必须以#!/bin/sh开头,并以exit 0结尾):

#!/bin/sh -e # # rc.local # This script is executed at the end of each multiuser runlevel. echo "$(date): System booted, running startup script" >> /var/log/startup.log # 示例:运行用户目录下的测试脚本 /home/testuser/startup_test.sh || true exit 0

3.3 建立软链接并启用服务

sudo ln -s /lib/systemd/system/rc-local.service /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable rc-local sudo systemctl start rc-local

重要提示:任何在rc.local中调用的长时间运行脚本必须加&放入后台,否则会阻塞系统启动。例如:

/home/testuser/long_running_script.sh &

4. 方法二:使用 systemd 创建自定义服务(推荐方案)

systemd是现代 Linux 系统的标准服务管理器,支持精细化控制启动顺序、重启策略、日志记录等功能,是生产环境首选。

4.1 编写测试脚本

创建一个简单的日志生成脚本用于验证:

mkdir -p /home/testuser && cd /home/testuser cat > startup_test.sh << 'EOF' #!/bin/bash DATE=$(date '+%Y-%m-%d %H:%M:%S') echo "✅ Startup script executed at $DATE" >> /home/testuser/boot.log EOF chmod +x startup_test.sh

4.2 创建 systemd 服务单元文件

推荐使用系统级服务(所有用户生效),创建服务文件:

sudo vim /etc/systemd/system/test-startup.service

填入以下内容:

[Unit] Description=Test Startup Script After=network.target syslog.target Documentation=https://example.com/startup-guide [Service] Type=simple User=testuser WorkingDirectory=/home/testuser ExecStart=/home/testuser/startup_test.sh StandardOutput=journal StandardError=journal Restart=no [Install] WantedBy=multi-user.target
参数说明:
  • After=network.target:确保网络已就绪后再运行
  • User=testuser:以普通用户身份运行,提升安全性
  • Restart=no:仅运行一次,不重复启动
  • StandardOutput=journal:输出重定向至 journal 日志系统

4.3 启用并验证服务

# 重载配置 sudo systemctl daemon-reload # 启用开机自启 sudo systemctl enable test-startup.service # 立即启动一次(无需重启) sudo systemctl start test-startup.service # 查看状态 sudo systemctl status test-startup.service

查看执行结果:

cat /home/testuser/boot.log # 输出示例: # ✅ Startup script executed at 2025-04-05 10:20:30

4.4 查看日志(高级调试)

使用journalctl查看服务运行详情:

sudo journalctl -u test-startup.service --since today

5. 树莓派 4B 实战案例:语音播报欢迎语

本节基于 Raspberry Pi OS(Debian 衍生版)演示如何实现开机语音播报,展示rc.local在嵌入式场景中的典型应用。

5.1 安装 espeak 语音合成工具

sudo apt update sudo apt install -y espeak

测试语音功能:

espeak "Hello from Raspberry Pi"

5.2 编写 Python 调用脚本

cd /home/pi nano sample.py

输入以下代码:

#!/usr/bin/env python import subprocess import time # 延迟5秒等待音频设备初始化 time.sleep(5) subprocess.call(['espeak "Welcome to the world of Raspberry Pi" 2>/dev/null'], shell=True)

赋予执行权限:

chmod +x sample.py

5.3 配置 rc.local 自动调用

编辑启动脚本:

sudo nano /etc/rc.local

exit 0前插入:

# 启动语音播报脚本(后台运行) sudo -u pi python /home/pi/sample.py & > /home/pi/boot_log.txt 2>&1

保存后重启验证:

sudo reboot

注意事项

  • 使用sudo -u pi切换到 pi 用户避免权限问题
  • 添加&将进程放入后台,防止阻塞启动
  • 输出重定向便于后续排查问题

6. 常见问题与避坑指南

6.1 系统卡在启动界面无法进入桌面

原因rc.local中执行了前台阻塞程序且未加&

解决方案

  • 所有长时任务必须后台运行:command &
  • 添加超时保护:timeout 30 command &
  • 使用nohup防止被终止:nohup command &

6.2 权限拒绝或找不到命令

原因PATH环境变量未继承,或脚本无执行权限。

解决方法

  • 在脚本中显式指定路径:/usr/bin/python而非python
  • 给脚本赋权:chmod +x script.sh
  • .service文件中设置Environment=PATH=...

示例修复:

[Service] Environment=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin

6.3 systemd 服务启动失败但无明显报错

使用以下命令深入排查:

# 查看详细状态 systemctl status your-service.service # 查看完整日志 journalctl -u your-service.service -b # 检查语法错误 systemd-analyze verify /etc/systemd/system/your-service.service

7. 总结

本文围绕“测试开机启动脚本”这一实际需求,系统讲解了 Linux 下两种核心自启方案的配置流程,并通过 Ubuntu 虚拟机与树莓派 4B 的双平台实测验证了可行性。

关键要点回顾:

  1. rc.local适用于快速测试,但在新系统中需手动恢复支持;
  2. systemd是现代系统的标准做法,支持更精细的服务控制;
  3. 所有前台脚本必须后台化运行(加&),否则会导致系统卡死;
  4. 合理使用日志输出和journalctl可大幅提升排错效率;
  5. 优先以非 root 用户运行服务,增强系统安全性。

通过本文提供的模板,你可以轻松将任意测试脚本、监控程序或自动化任务集成到系统启动流程中,实现真正的“一键部署、无人值守”。


获取更多AI镜像

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

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

Degrees of Lewdity汉化兼容性终极指南:从安装到完美运行

Degrees of Lewdity汉化兼容性终极指南&#xff1a;从安装到完美运行 【免费下载链接】Degrees-of-Lewdity-Chinese-Localization Degrees of Lewdity 游戏的授权中文社区本地化版本 项目地址: https://gitcode.com/gh_mirrors/de/Degrees-of-Lewdity-Chinese-Localization …

作者头像 李华
网站建设 2026/4/21 8:25:34

YOLO-v8.3实战案例:无人机航拍图像中小目标检测挑战

YOLO-v8.3实战案例&#xff1a;无人机航拍图像中小目标检测挑战 1. 引言 随着无人机技术的快速发展&#xff0c;航拍图像在农业监测、城市规划、灾害评估等领域的应用日益广泛。然而&#xff0c;航拍图像中普遍存在小目标&#xff08;如车辆、行人、动物&#xff09;占比低、…

作者头像 李华
网站建设 2026/4/20 15:04:52

Hunyuan MT1.5-1.8B工具推荐:支持SRT字幕翻译的一键镜像部署

Hunyuan MT1.5-1.8B工具推荐&#xff1a;支持SRT字幕翻译的一键镜像部署 1. 引言&#xff1a;轻量级多语翻译模型的工程突破 随着全球化内容消费的增长&#xff0c;高质量、低延迟的多语言翻译需求日益迫切。尤其是在视频本地化、跨语言交流和移动端应用中&#xff0c;传统大…

作者头像 李华
网站建设 2026/4/19 22:36:08

Z-Image-Edit创意生成实战:风格迁移部署详细步骤

Z-Image-Edit创意生成实战&#xff1a;风格迁移部署详细步骤 1. 引言 随着生成式AI技术的快速发展&#xff0c;图像生成与编辑能力正逐步从实验室走向实际应用。阿里最新推出的Z-Image系列模型&#xff0c;凭借其高效推理、多语言支持和强大的指令遵循能力&#xff0c;迅速在…

作者头像 李华
网站建设 2026/4/22 10:18:21

5个Hunyuan大模型部署技巧:HY-MT1.5镜像免配置一键启动

5个Hunyuan大模型部署技巧&#xff1a;HY-MT1.5镜像免配置一键启动 1. 引言 随着全球化业务的不断扩展&#xff0c;高质量、低延迟的机器翻译能力已成为企业出海、内容本地化和跨语言沟通的核心需求。腾讯混元团队推出的 HY-MT1.5-1.8B 翻译模型&#xff0c;基于轻量级高性能…

作者头像 李华
网站建设 2026/4/22 2:09:19

Hunyuan-MT-7B网页推理打不开?端口映射问题解决

Hunyuan-MT-7B网页推理打不开&#xff1f;端口映射问题解决 1. 问题背景与场景描述 在部署腾讯混元开源的 Hunyuan-MT-7B-WEBUI 镜像后&#xff0c;许多用户反馈无法正常访问网页推理界面。尽管模型成功加载、Jupyter Notebook 可以运行启动脚本&#xff0c;但点击“网页推理…

作者头像 李华