news 2026/5/26 14:58:28

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

作者头像

张小明

前端开发工程师

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/5/21 7:13:19

批量处理神器:科哥图像抠图镜像提升工作效率

批量处理神器&#xff1a;科哥图像抠图镜像提升工作效率 1. 引言&#xff1a;为什么你需要一个高效的图像抠图工具&#xff1f; 你有没有遇到过这样的情况&#xff1a;手头有一堆商品图、人像照或者设计素材&#xff0c;全都需要去掉背景&#xff1f;如果靠PS手动抠图&#x…

作者头像 李华
网站建设 2026/5/19 22:11:37

Lucky Draw抽奖系统:企业级活动抽奖终极解决方案

Lucky Draw抽奖系统&#xff1a;企业级活动抽奖终极解决方案 【免费下载链接】lucky-draw 年会抽奖程序 项目地址: https://gitcode.com/gh_mirrors/lu/lucky-draw 还在为活动抽奖环节的技术实现而苦恼吗&#xff1f;Lucky Draw抽奖系统作为一款功能强大的开源项目&…

作者头像 李华
网站建设 2026/5/22 2:40:14

2024年3月GESP真题及题解(C++八级): 接竹竿

2024年3月GESP真题及题解(C八级): 接竹竿 题目描述 小杨同学想用卡牌玩一种叫做“接竹竿”的游戏。 游戏规则是&#xff1a;每张牌上有一个点数 v v v&#xff0c;将给定的牌依次放入一列牌的末端。若放入之前这列牌中已有与这张牌点数相 同的牌&#xff0c;则小杨同学会将这…

作者头像 李华
网站建设 2026/5/24 11:51:09

SSCMS 正式推出全新平台——献丑AI视频开源社区

作为国内领先的开源CMS厂商&#xff0c;SSCMS深耕内容管理领域多年。如今&#xff0c;我们从图文迈向视频&#xff0c;从内容管理延伸到内容创作&#xff0c;正式推出首个AI视频开源社区。在这里&#xff0c;你不仅能看到惊艳的AI视频作品&#xff0c;更能打开每一个作品的完整…

作者头像 李华
网站建设 2026/5/22 14:56:14

Agentic AI提示系统的分布式锁设计:架构师教你解决扩展时的数据一致性问题

Agentic AI提示系统的分布式锁设计:架构师教你解决扩展时的数据一致性问题 一、引入:当Agent开始“抢菜单”——一个真实的崩溃现场 凌晨3点,某电商平台的客服运营群突然炸了: “今天的自动回复全乱了!用户问‘退款流程’,Agent居然回复‘亲,记得给好评哦~’” “我明…

作者头像 李华
网站建设 2026/5/16 5:08:48

吐血推荐专科生必用AI论文软件TOP10

吐血推荐专科生必用AI论文软件TOP10 专科生论文写作的“隐形助手”测评 随着AI技术的不断进步&#xff0c;越来越多的专科生开始借助AI论文软件提升写作效率与质量。然而&#xff0c;面对市场上种类繁多的工具&#xff0c;如何选择一款真正适合自己的成了难题。为此&#xff0c…

作者头像 李华