news 2026/4/23 15:39:32

零基础也能做!教你写出第一个开机启动脚本

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
零基础也能做!教你写出第一个开机启动脚本

零基础也能做!教你写出第一个开机启动脚本

你是不是也遇到过这样的情况:每次重启服务器或设备后,都要手动运行一堆命令来启动服务、配置网络、挂载磁盘?重复操作不仅麻烦,还容易出错。有没有一种方法能让这些操作在系统启动时自动完成?

答案是肯定的——写一个开机启动脚本

别被“脚本”两个字吓到,哪怕你是零基础,只要会打字、懂基本命令,就能轻松搞定。本文将手把手带你完成第一个开机启动脚本,不需要任何编程经验,也不用安装复杂工具,只需要修改一个系统文件,就能实现自动化执行。

1. 开机启动脚本是什么?它能帮你做什么

简单来说,开机启动脚本就是一个在系统启动完成后自动运行的命令集合。你可以把它理解为“系统起床后的第一件事清单”。

比如:

  • 自动连接Wi-Fi并设置IP
  • 启动Web服务(如Nginx、Node.js)
  • 挂载U盘或硬盘
  • 定时任务初始化
  • 日志清理或备份

这些原本需要你登录后手动执行的操作,都可以通过一个小小的脚本,在开机时全自动完成。

为什么选择rc.local方法?

Linux 系统有多种方式实现开机自启(如 systemd、cron @reboot),但对新手最友好的还是/etc/rc.local文件。原因如下:

  • 无需学习复杂语法:直接写 Shell 命令就行
  • 兼容性强:Ubuntu 16.04、Tina Linux 等主流系统都支持
  • 稳定可靠:系统内核加载完毕后才执行,环境完整
  • 调试方便:出错了可以直接查看日志或手动运行测试

小知识补充:Linux 系统在开机完成后会自动运行/etc/rc.local这个文件中的内容。我们只需把想执行的命令写进去,就能实现开机自动运行,非常省事!

2. 准备工作:确认系统环境和权限

在开始之前,请确保你的系统满足以下条件:

  • 使用的是 Ubuntu 16.04 或其他支持rc.local的 Linux 发行版(如 Tina)
  • 已经以管理员身份登录(推荐使用 root 用户或具有 sudo 权限的账户)
  • 能正常执行基本命令(如ifconfigping

检查rc.local是否存在

打开终端,输入以下命令查看文件是否存在:

ls /etc/rc.local

如果提示“没有那个文件”,说明系统默认未创建,我们需要手动创建。

创建并赋予可执行权限

运行以下命令创建文件:

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

这一步的作用是:

  • touch:创建空文件
  • chmod +x:让它可以被执行

接下来我们就可以往里面写命令了。

3. 编写你的第一个开机启动脚本

现在进入正题——编写脚本内容。

脚本的基本结构

rc.local文件有固定的格式要求,必须遵守,否则可能导致系统启动异常。

#!/bin/bash [your command1] [your command2] ... exit 0

关键点说明:

  • #!/bin/bash:声明这是一个 Bash 脚本(建议加上,更规范)
  • 所有你要执行的命令写在中间区域
  • 最后一行必须是exit 0,表示脚本成功结束。少了这一句,某些系统可能会卡住!

实际例子:自动配置无线网络

假设你想让设备每次开机都自动开启 Wi-Fi 并连接热点,可以这样写:

#!/bin/bash # 开启 wlan0 接口 ifconfig wlan0 up # 配置 IP 地址(示例为静态 IP) ifconfig wlan0 192.168.1.100 netmask 255.255.255.0 # 添加默认路由 route add default gw 192.168.1.1 # 设置 DNS(可选) echo "nameserver 8.8.8.8" > /etc/resolv.conf exit 0

保存后重启系统,你会发现网络已经自动配置好了,不用再手动输入命令。

注意:上面的 IP 和网关请根据你的实际网络环境调整。

更多实用场景示例

示例1:自动挂载U盘
#!/bin/bash # 创建挂载点(如果不存在) mkdir -p /mnt/usb # 挂载第一个U盘(假设设备名为 sda1) mount /dev/sda1 /mnt/usb || true exit 0

|| true表示即使U盘没插也没关系,不会导致启动失败。

示例2:启动一个Python服务
#!/bin/bash # 进入项目目录并后台运行 Python 脚本 cd /home/pi/myproject && python3 app.py & exit 0
示例3:开机播放欢迎语音(树莓派等设备适用)
#!/bin/bash # 等待音频系统就绪 sleep 3 # 播放提示音 aplay /home/pi/hello.wav exit 0

4. 如何编辑rc.local文件

你可以使用任意文本编辑器来修改这个文件。以下是几种常用方法:

方法一:使用 nano(推荐新手)

sudo nano /etc/rc.local
  • 按方向键移动光标
  • 直接输入命令
  • 保存:按Ctrl+O→ 回车
  • 退出:按Ctrl+X

方法二:使用 vim

sudo vim /etc/rc.local
  • i进入编辑模式
  • 输入内容
  • Esc,输入:wq保存退出

方法三:用 echo 批量写入(适合自动化部署)

cat << 'EOF' | sudo tee /etc/rc.local #!/bin/bash ifconfig wlan0 up ifconfig wlan0 192.168.1.100 netmask 255.255.255.0 route add default gw 192.168.1.1 exit 0 EOF

这种方式适合批量部署多个设备,复制粘贴即可。

5. 测试与排错技巧

写完脚本后,不要急着重启。先本地测试一下是否能正常运行。

手动执行脚本测试

sudo /etc/rc.local

观察输出是否有错误。如果有报错,比如“command not found”或“no such device”,说明命令有问题或执行时机太早。

常见问题及解决方法

问题现象可能原因解决方案
脚本没执行rc.local没有可执行权限运行sudo chmod +x /etc/rc.local
提示“Job is running”或卡住缺少exit 0务必在末尾加上exit 0
命令找不到(如 ifconfig)环境变量未加载改用绝对路径,如/sbin/ifconfig
U盘挂载失败设备还没识别就执行了加上sleep 2延迟几秒再挂载
Python 脚本报错路径不对或依赖未安装先手动运行确认无误

查看系统日志定位问题

大多数 Linux 系统会记录rc.local的执行情况:

sudo journalctl -u rc-local

或者查看通用日志:

dmesg | grep -i error

从中可以找到脚本执行失败的具体原因。

6. 安全注意事项与最佳实践

虽然rc.local很方便,但也有一些需要注意的地方,避免影响系统稳定性。

推荐做法

  • 每条命令前加注释:说明用途,便于后期维护
  • 避免长时间阻塞操作:如死循环、无限等待
  • 重要命令加错误处理:用|| true防止中断启动
  • 尽量使用绝对路径:如/sbin/ifconfig而不是ifconfig
  • 加入适当延迟:特别是涉及硬件识别时(如USB、网卡)

❌ 不推荐的做法

  • 在脚本中运行交互式程序(需要用户输入的)
  • 执行耗时过长的任务而不放后台(如大数据处理)
  • 修改关键系统文件而无备份
  • 多次重复挂载同一设备

示例:优化后的安全脚本模板

#!/bin/bash # === 开机启动脚本示例 === # 等待系统基本服务就绪 sleep 2 # 启动无线网卡 /sbin/ifconfig wlan0 up || echo "wlan0 may not exist" # 配置静态IP(根据实际情况调整) /sbin/ifconfig wlan0 192.168.1.100 netmask 255.255.255.0 # 添加默认网关 /sbin/route add default gw 192.168.1.1 || true # 后台启动Python服务 cd /home/pi/project && python3 server.py > /tmp/boot.log 2>&1 & # 挂载U盘(非必需,失败不影响) sleep 3 mount /dev/sda1 /mnt/usb || true exit 0

这个版本加入了容错机制和日志输出,更加健壮。

7. 总结:从零到一,你已经迈出了自动化第一步

通过本文的学习,你应该已经掌握了如何编写一个简单的开机启动脚本,并成功实现了自动化任务。回顾一下关键步骤:

  1. 确认系统支持rc.local
  2. 创建文件并赋予可执行权限
  3. 按照标准格式编写命令
  4. 务必保留exit 0结尾
  5. 测试脚本并排查常见问题

你会发现,所谓的“脚本编程”其实并没有那么难。只要你能把手动操作的命令列出来,放进rc.local,就能让系统替你完成重复劳动。

下一步你可以尝试:

  • 把多个常用命令整合成一键启动脚本
  • 结合定时任务(crontab)实现更复杂的自动化
  • 学习 systemd 服务管理,打造专业级自启服务

自动化是提升效率的第一步。今天你写的这个小脚本,可能就是未来智能运维的起点。


获取更多AI镜像

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

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

BabelDOC:3个步骤让英文PDF文档变成中文,格式完全保留

BabelDOC&#xff1a;3个步骤让英文PDF文档变成中文&#xff0c;格式完全保留 【免费下载链接】BabelDOC Yet Another Document Translator 项目地址: https://gitcode.com/GitHub_Trending/ba/BabelDOC 还在为阅读英文技术文档而头疼吗&#xff1f;每次打开外文PDF&…

作者头像 李华
网站建设 2026/4/23 13:17:14

萤石开放平台 设备运维 | 设备远程配置 快速入门

1. 前置条件 设备要求&#xff1a; 设备绑定在当前账号下当前设备状态&#xff1a;在线设备是通过萤石协议接入的海康IPC&#xff08;5.6.0版本以上&#xff09;或者海康NVR&#xff08;4.2.0版本以上&#xff09;&#xff0c;不是托管设备 2. 使用流程 2.1进入设备列表&am…

作者头像 李华
网站建设 2026/4/23 14:42:16

负面提示词怎么写?Qwen-Image-2512-ComfyUI避雷经验

负面提示词怎么写&#xff1f;Qwen-Image-2512-ComfyUI避雷经验 1. 为什么负面提示词在Qwen-Image-2512中如此关键&#xff1f; 很多人用Qwen-Image-2512生成图片时&#xff0c;第一反应是&#xff1a;“这模型真强&#xff0c;细节太真实了&#xff01;”确实&#xff0c;它…

作者头像 李华
网站建设 2026/4/16 16:42:54

【LLaVA-NeXT】LLaVATrainer说明

LLaVATrainer class llava.train.llava_trainer.LLaVATrainer(Trainer)用于训练 LLaVA (Large Language and Vision Assistant) 多模态模型的训练器类&#xff0c;继承自 transformers.Trainer。 该类在标准 Transformer Trainer 基础上扩展了以下功能&#xff1a; 支持 MeZ…

作者头像 李华
网站建设 2026/4/23 11:35:15

计算机Java毕设实战-基于springboot的医药药品管理系统【完整源码+LW+部署说明+演示视频,全bao一条龙等】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/4/23 13:19:44

实用丨维普AIGC降AI工具推荐 + 操作顺序

维普AIGC检测高&#xff1f;6款工具帮你降到合格线 TL;DR&#xff1a;维普AIGC检测算法和知网不同&#xff0c;很多知网能过的工具在维普可能过不了。实测对维普效果最好的是嘎嘎降AI&#xff08;67%→9%&#xff09;&#xff0c;其次是比话降AI&#xff08;60%→12%&#xff0…

作者头像 李华