news 2026/2/24 14:27:19

从0开始学Linux自启脚本,测试开机启动脚本超详细教程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从0开始学Linux自启脚本,测试开机启动脚本超详细教程

从0开始学Linux自启脚本,测试开机启动脚本超详细教程

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

在实际的服务器运维和嵌入式系统开发中,经常需要某些服务或脚本在系统启动时自动运行。例如,自动挂载磁盘、启动监控程序、初始化环境变量等。手动执行不仅效率低下,还容易遗漏。

本文将带你从零开始掌握Linux系统下如何配置开机自启动脚本,适用于CentOS和Ubuntu等主流发行版。通过本教程,你将学会:

  • 编写可执行的初始化脚本
  • 理解系统运行级别与启动流程
  • 正确创建软链接以实现开机自启
  • 验证并调试自启功能

无论你是初学者还是有一定经验的开发者,都能通过本指南快速上手并应用于实际项目。


2. 准备自启动脚本

2.1 创建脚本文件

我们将编写一个简单的测试脚本,用于验证开机是否成功执行。该脚本会记录当前时间到指定日志文件中。

sudo vim /etc/init.d/mytest.sh

输入以下内容:

#!/bin/bash # # mytest.sh - 测试开机自启脚本 # description: 记录系统启动时间到日志文件 case "$1" in start) echo "$(date): 系统已启动,执行 mytest.sh 脚本" >> /var/log/mytest.log ;; stop) echo "$(date): 系统正在关闭,执行停止操作" >> /var/log/mytest.log ;; *) echo "Usage: $0 {start|stop}" exit 1 ;; esac exit 0

2.2 设置脚本权限

确保脚本具有可执行权限:

sudo chmod +x /etc/init.d/mytest.sh

注意/etc/init.d/是传统SysVinit系统的标准脚本存放目录,尽管现代系统多使用systemd,但该方式仍广泛兼容。


3. 查看系统运行级别

3.1 什么是运行级别(Runlevel)?

Linux系统根据“运行级别”决定启动哪些服务。不同级别对应不同的系统状态:

运行级别含义
0关机
1单用户模式(维护模式)
2-5多用户模式(具体含义因发行版而异)
6重启

3.2 查询当前运行级别

使用runlevel命令查看最后一次和当前的运行级别:

runlevel

输出示例:

N 5

其中N表示无前一状态,5表示当前运行级别为5。

在大多数桌面版Ubuntu/CentOS中,默认运行级别为5(带图形界面的多用户模式)。
对于无GUI的服务器,通常为3。

3.3 确定对应的rc目录

每个运行级别对应一个/etc/rcX.d/目录(X为数字),系统启动时会依次执行该目录下的脚本。

由于我们查得运行级别为5,因此应关注:

/etc/rc5.d/

4. 进入对应的rc.d目录并创建软链接

4.1 切换到目标目录

cd /etc/rc5.d/

该目录下包含大量以SK开头的符号链接,它们指向/etc/init.d/中的真实脚本。

4.2 理解S与K前缀的含义

前缀含义场景
SStart,系统启动时执行服务启动
KKill,系统关闭时执行服务停止

后接两位数字表示执行顺序,范围为00~99。数值越小,优先级越高。

例如:

  • S10network:网络服务较早启动
  • S99local:本地自定义脚本最后启动

4.3 为脚本创建软链接

为了确保我们的脚本在其他关键服务(如网络、文件系统)就绪后再运行,建议设置较高的序号,如99。

执行命令:

sudo ln -s /etc/init.d/mytest.sh S99mytest

参数说明

  • -s:创建符号链接(软链接)
  • 源路径:/etc/init.d/mytest.sh
  • 链接名:S99mytest,命名规范为S{两位数字}{脚本名}

4.4 验证软链接是否创建成功

ls -l S99mytest

输出应类似:

lrwxrwxrwx 1 root root 25 Apr 5 10:00 S99mytest -> /etc/init.d/mytest.sh

表示软链接已正确建立。


5. 测试开机自启动功能

5.1 手动模拟启动过程(可选)

在重启前,可以先手动测试脚本能否正常执行:

sudo /etc/init.d/mytest.sh start

检查日志文件是否生成:

cat /var/log/mytest.log

预期输出:

Mon Apr 5 10:05:00 CST 2025: 系统已启动,执行 mytest.sh 脚本

5.2 重启系统进行真实测试

使用以下命令重启:

sudo reboot

系统重新启动后,登录并查看日志:

cat /var/log/mytest.log

如果看到新的时间戳记录,说明脚本已在开机时自动执行!


6. 常见问题与解决方案

6.1 脚本未执行?排查要点

问题检查方法解决方案
权限不足ls -l /etc/init.d/mytest.sh使用chmod +x添加执行权限
软链接错误ls -l /etc/rc5.d/S99mytest确保链接指向正确的源文件
路径拼写错误readlink /etc/rc5.d/S99mytest修正源路径或重新创建链接
日志目录不存在ls /var/log/手动创建/var/log/mytest.log并赋权

6.2 如何支持多个运行级别?

若希望脚本在多个级别下都启动(如3和5),需为每个级别创建对应链接:

sudo ln -s /etc/init.d/mytest.sh /etc/rc3.d/S99mytest

6.3 删除自启配置

当不再需要自启时,删除软链接即可(不要删除原脚本):

sudo rm /etc/rc5.d/S99mytest

7. 最佳实践建议

7.1 脚本命名规范

  • 使用小写字母和下划线,避免空格或特殊字符
  • 名称应清晰表达用途,如backup_db.shmount_disks.sh

7.2 启动顺序规划

根据依赖关系合理设置序号:

序号区间推荐用途
01–20内核模块、设备驱动
21–50网络、存储、数据库
51–80应用服务
81–99自定义脚本、日志记录

7.3 添加系统服务管理支持(进阶)

虽然本文使用SysVinit方式,但在支持systemd的系统中,推荐将其封装为Unit文件以获得更好控制。

示例/etc/systemd/system/mytest.service

[Unit] Description=My Test Startup Script After=network.target [Service] ExecStart=/etc/init.d/mytest.sh start ExecStop=/etc/init.d/mytest.sh stop RemainAfterExit=yes [Install] WantedBy=multi-user.target

启用命令:

sudo systemctl enable mytest.service

8. 总结

通过本教程,你已经掌握了在Linux系统中配置开机自启动脚本的完整流程:

  1. 编写脚本:放置于/etc/init.d/并赋予执行权限
  2. 确认运行级别:使用runlevel命令获取当前级别
  3. 创建软链接:在/etc/rcX.d/中建立以S开头的链接
  4. 验证功能:重启系统并检查日志输出
  5. 优化管理:遵循最佳实践,提升稳定性和可维护性

这套方法适用于CentOS 6/7 和 Ubuntu 18.04/20.04 等仍保留SysVinit兼容层的系统,是运维工作中非常实用的基础技能。


获取更多AI镜像

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

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

移位寄存器边界条件处理:异常输入情况剖析

移位寄存器的边界艺术:当“理想电路”撞上现实世界你有没有遇到过这样的情况——代码写得严丝合缝,时序图对得一丝不苟,可系统一上电,输出就是乱码?LED点阵屏明明只该亮一行,结果整屏都在“抽搐”&#xff…

作者头像 李华
网站建设 2026/2/23 22:34:04

ASR模型体验省钱妙招:按秒计费比包月省千元

ASR模型体验省钱妙招:按秒计费比包月省千元 你是不是也遇到过这样的情况:想用AI技术提升工作效率,但一打听价格,动辄几万甚至几十万的系统报价直接劝退?尤其是像小型律所这种对成本敏感又急需数字化转型的场景&#x…

作者头像 李华
网站建设 2026/2/21 20:59:57

营房透视化数字孪生与空间智能决策系统研发—— 基于视频动态目标三维重构的高安全营区空间智能治理技术体系

营房透视化数字孪生与空间智能决策系统研发—— 基于视频动态目标三维重构的高安全营区空间智能治理技术体系研发单位:镜像视界(浙江)科技有限公司一、研究背景与研发必要性营房是部队组织运行、战备保障、指挥调度与应急处突的基础空间单元&…

作者头像 李华
网站建设 2026/2/24 9:19:39

Open Interpreter代码解释器:云端免配置环境,5分钟体验

Open Interpreter代码解释器:云端免配置环境,5分钟体验 你是不是也遇到过这种情况:看到别人用自然语言就能让电脑自动写代码、分析数据、画图甚至处理文件,感觉特别酷,结果自己一上手就被复杂的开发环境劝退&#xff…

作者头像 李华
网站建设 2026/2/23 0:06:09

中国企业的管理层激励:价值创造的内在动力

中国企业的管理层激励:价值创造的内在动力 关键词:中国企业、管理层激励、价值创造、激励机制、内在动力 摘要:本文聚焦于中国企业的管理层激励,探讨其作为价值创造内在动力的重要性。通过对管理层激励的核心概念、相关算法原理、数学模型等方面的深入分析,结合项目实战案例…

作者头像 李华
网站建设 2026/2/23 14:21:46

比较不同二极管在整流电路中的表现

二极管选型实战:从工频整流到高频电源,哪种器件真正扛得住?你有没有遇到过这样的问题?设计一个反激电源,效率怎么都上不去;示波器一测输出端,满屏都是振铃噪声;或者样机在常温下工作…

作者头像 李华