适合新手的自启方法,测试脚本几分钟就能配好
在日常使用 Linux 系统的过程中,我们常常会遇到这样的需求:希望某个脚本或服务在系统开机时自动运行,比如监控程序、日志收集脚本,或者一些自定义的初始化任务。对于刚接触 Linux 的朋友来说,“开机自启”听起来可能有点复杂,但其实只要掌握正确的方法,配置一个开机启动脚本并不难。
本文将带你一步步完成一个简单、可靠、适用于 CentOS 和 Ubuntu 系统的开机自启脚本配置流程。整个过程不需要复杂的命令,也不涉及 systemd 的高级配置,特别适合新手快速上手。你只需要准备好自己的脚本,按照步骤操作,几分钟内就能让脚本随系统自动运行。
1. 准备你的启动脚本
首先,你需要有一个想要开机运行的脚本。为了方便演示,我们假设这个脚本叫做mytest.sh,它位于/etc/init.d/目录下。
你可以用任意文本编辑器创建它:
sudo nano /etc/init.d/mytest.sh写入一个简单的测试内容,例如:
#!/bin/bash # 简单的日志输出脚本 echo "【$(date)】系统已启动,自定义脚本 mytest.sh 正在运行" >> /var/log/mytest.log保存后,记得给脚本添加可执行权限:
sudo chmod +x /etc/init.d/mytest.sh现在,这个脚本已经可以手动执行了。你可以运行下面这条命令来测试是否正常工作:
sudo /etc/init.d/mytest.sh然后查看日志文件确认输出:
cat /var/log/mytest.log如果能看到时间戳和提示信息,说明脚本本身没有问题,接下来就可以让它开机自动运行了。
2. 查看当前系统的运行级别
Linux 系统有不同的“运行级别”(runlevel),它决定了系统启动后进入哪种工作模式。不同的运行级别对应不同的服务加载集合。我们要做的,就是把我们的脚本注册到正确的运行级别中。
先查看当前系统的运行级别:
runlevel执行后你会看到类似这样的输出:
N 5这里的5表示系统当前处于运行级别 5。通常情况下:
- 运行级别 3:多用户文本模式(无图形界面)
- 运行级别 5:多用户图形模式(带 GUI)
大多数桌面版或服务器启用图形界面的系统默认是级别 5。因此,我们需要将脚本链接到/etc/rc5.d/目录下。
小知识补充:
/etc/init.d/是存放所有服务启动脚本的目录。/etc/rcX.d/(如 rc5.d)是各个运行级别对应的“启动链接目录”,里面的文件大多是指向/etc/init.d/脚本的软链接。- 以
S开头的链接表示 Startup(启动),以K开头的表示 Kill(关闭)。
3. 进入对应的 rcX.d 目录
既然当前运行级别是 5,我们就需要进入/etc/rc5.d/目录:
cd /etc/rc5.d/进入之后,可以用ls命令看看里面有哪些已有的启动项:
ls你会看到一堆像S01sysstat、S10rsyslog、S99network这样的文件名。它们都是软链接,指向/etc/init.d/下的真实脚本。
注意命名规则:
S表示 Start(开机时启动)- 后面两位数字代表启动顺序,数值越大越晚启动
- 名字越靠后,说明依赖的服务越多(比如网络、数据库等)
所以如果你的脚本依赖其他服务(比如 MySQL 或 Nginx),建议设置一个较大的序号,比如 90 以上,确保那些服务已经准备就绪。
4. 为脚本创建软链接
接下来,我们要在/etc/rc5.d/中为我们的脚本创建一个以S开头的软链接。
执行以下命令:
sudo ln -s /etc/init.d/mytest.sh S99test解释一下这条命令:
ln -s:创建软链接/etc/init.d/mytest.sh:源脚本路径S99test:链接名称,S表示启动,99是启动顺序,test是名字标识
创建完成后,再次运行ls查看:
ls你应该能在列表中看到S99test,并且它的指向是/etc/init.d/mytest.sh。
这一步非常关键——正是这个软链接告诉系统:“在进入 runlevel 5 时,请运行 mytest.sh 脚本”。
5. 测试重启并验证效果
一切就绪后,就可以通过重启来测试效果了。
执行重启命令:
sudo reboot系统重新启动后,登录进去,检查日志文件是否被写入:
cat /var/log/mytest.log如果看到类似下面的内容:
【Mon Apr 5 10:23:45 CST 2025】系统已启动,自定义脚本 mytest.sh 正在运行恭喜你!你的脚本已经成功实现了开机自启!
而且整个过程只用了几个基础命令,完全不需要修改系统配置文件或学习复杂的 systemd 单元语法,非常适合初学者快速实现自动化任务。
6. 常见问题与实用建议
虽然上述方法简单有效,但在实际使用中可能会遇到一些小问题。以下是几个常见情况及应对建议:
❓ 脚本没执行?检查这几个地方
权限问题
确保/etc/init.d/mytest.sh有可执行权限:sudo chmod +x /etc/init.d/mytest.sh软链接路径错误
使用ls -l S99test检查软链接是否正确指向目标脚本:lrwxrwxrwx 1 root root 23 Apr 5 10:20 S99test -> /etc/init.d/mytest.sh如果显示 “No such file or directory”,说明路径写错了。
日志目录不存在
如果脚本要写入/var/log/mytest.log,但该文件所在目录不可写,也会失败。可以提前创建并赋权:sudo touch /var/log/mytest.log sudo chmod 644 /var/log/mytest.log
更进一步的小技巧
想让脚本更规范?加个标准头部
给脚本加上 LSB(Linux Standard Base)注释头,可以让它更像一个正规服务脚本:#!/bin/bash ### BEGIN INIT INFO # Provides: mytest # Required-Start: $local_fs $network # Required-Stop: $local_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: 自定义测试启动脚本 # Description: 用于测试开机自启功能的简单脚本 ### END INIT INFO echo "【$(date)】系统已启动,自定义脚本 mytest.sh 正在运行" >> /var/log/mytest.log这样不仅便于管理,某些工具还能识别这些元信息。
支持多个运行级别?多建几个链接就行
如果你想让脚本在 runlevel 3 和 5 都能启动,可以分别在/etc/rc3.d/和/etc/rc5.d/创建软链接:sudo ln -s /etc/init.d/mytest.sh /etc/rc3.d/S99test sudo ln -s /etc/init.d/mytest.sh /etc/rc5.d/S99test不想用了?删除软链接即可
删除开机启动非常简单,只需删掉软链接,不影响原脚本:sudo rm /etc/rc5.d/S99test完全可逆,安全无忧。
7. 总结
通过本文的介绍,你应该已经掌握了如何在 CentOS 和 Ubuntu 系统中,为一个简单的脚本配置开机自启功能。整个过程只需要五步:
- 编写并放置脚本到
/etc/init.d/ - 使用
runlevel查看当前运行级别 - 进入对应的
/etc/rcX.d/目录 - 创建以
S开头的软链接 - 重启系统并验证结果
这种方法基于传统的 SysVinit 启动机制,在大多数主流发行版中仍然有效,尤其适合那些不熟悉 systemd 或只想快速实现自动化的用户。
更重要的是,这套流程逻辑清晰、操作直观、易于调试,真正做到了“小白也能几分钟搞定”。
无论你是想做系统监控、环境初始化,还是定时任务预加载,都可以用这种方式轻松实现。下次再有人问你“怎么让脚本开机运行”,你可以自信地说:很简单,我教你三分钟搞定。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。