当前位置: 首页 > news >正文

适合新手的自启方法,测试脚本几分钟就能配好

适合新手的自启方法,测试脚本几分钟就能配好

在日常使用 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

你会看到一堆像S01sysstatS10rsyslogS99network这样的文件名。它们都是软链接,指向/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. 常见问题与实用建议

虽然上述方法简单有效,但在实际使用中可能会遇到一些小问题。以下是几个常见情况及应对建议:

❓ 脚本没执行?检查这几个地方

  1. 权限问题
    确保/etc/init.d/mytest.sh有可执行权限:

    sudo chmod +x /etc/init.d/mytest.sh
  2. 软链接路径错误
    使用ls -l S99test检查软链接是否正确指向目标脚本:

    lrwxrwxrwx 1 root root 23 Apr 5 10:20 S99test -> /etc/init.d/mytest.sh

    如果显示 “No such file or directory”,说明路径写错了。

  3. 日志目录不存在
    如果脚本要写入/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 系统中,为一个简单的脚本配置开机自启功能。整个过程只需要五步:

  1. 编写并放置脚本到/etc/init.d/
  2. 使用runlevel查看当前运行级别
  3. 进入对应的/etc/rcX.d/目录
  4. 创建以S开头的软链接
  5. 重启系统并验证结果

这种方法基于传统的 SysVinit 启动机制,在大多数主流发行版中仍然有效,尤其适合那些不熟悉 systemd 或只想快速实现自动化的用户。

更重要的是,这套流程逻辑清晰、操作直观、易于调试,真正做到了“小白也能几分钟搞定”。

无论你是想做系统监控、环境初始化,还是定时任务预加载,都可以用这种方式轻松实现。下次再有人问你“怎么让脚本开机运行”,你可以自信地说:很简单,我教你三分钟搞定。


获取更多AI镜像

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

http://www.jsqmd.com/news/287627/

相关文章:

  • 2026年第一季度宁波系统阳光房品牌推荐榜单
  • Qwen3-1.7B温度参数调整:生成多样性优化实战
  • Emotion2Vec+ Large与Rev.ai对比:开源VS商业API选型分析
  • 2026年宁波工业污水毒性预警与溯源服务商综合盘点
  • 2026年河北桃酥制造厂竞争格局与选型深度分析
  • BERT模型更新策略:增量训练与热替换部署方案
  • Qwen3-Embedding-4B与text-embedding-3-large对比评测
  • 从SEO到GEO:传统制造业GEO源码搭建全指南,破解获客难痛点实现精准转化
  • PyTorch-2.x-Universal-Dev-v1.0多模态应用落地详解
  • NewBie-image-Exp0.1 vs Stable Diffusion XL:动漫生成质量与GPU利用率对比评测
  • Qwen轻量模型部署指南:适用于IoT设备的精简方案
  • Qwen3-4B教育场景应用:智能答疑系统部署完整流程
  • GPEN部署卡在依赖安装?预装环境镜像免配置解决方案
  • PyTorch通用开发环境企业应用:中小企业快速搭建训练平台
  • YOLOv13官版镜像FullPAD机制体验,梯度传播更顺畅
  • 2026年云南产品认证平台选型指南:实力、口碑与适配性深度剖析
  • Qwen All-in-One交通调度辅助:语音指令解析实战
  • 构建SaaS服务:基于GPEN的按次计费修图平台架构设计
  • 零基础入门YOLO11,手把手教你快速上手目标检测
  • GPT-OSS-20B性能测试报告:吞吐量与响应时间
  • 零基础部署开机启动脚本,用测试开机启动脚本快速上手
  • 电商智能修图实战:CV-UNet镜像快速实现透明背景生成
  • 2026优秀生产线厂家推荐榜单:谁在驱动智造未来?
  • YOLO11新手入门:零基础实现图像识别实战
  • [Friends] Friends alternatives, less socially liberal.
  • 2026年初江苏企业团建卫衣定制服务商深度评测与选择指南
  • 看了就想试!BSHM打造透明背景大片效果
  • 避坑指南:Ubuntu开机启动脚本常见问题全解析
  • ros2 jazzy 用c++开发服务节点,回调函数使用类非静态成员函数
  • 开箱即用有多爽?PyTorch-2.x-Universal-Dev-v1.0五分钟上手实录