news 2026/9/2 20:59:58

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

作者头像

张小明

前端开发工程师

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/8/31 11:58:54

.NET 10 也能跑 YOLO?用 YoloSharp 轻松实现目标检测

前言工业视觉、智能安防、零售分析等场景中&#xff0c;目标检测早已不是"高大上"的专属技术&#xff0c;而是逐渐成为日常开发的一部分。然而&#xff0c;对于 .NET 开发来说&#xff0c;想要在 C# 项目中快速接入 YOLO 模型却并不容易——要么依赖 Python 服务做胶…

作者头像 李华
网站建设 2026/8/31 1:45:14

ImageGlass终极指南:免费开源图像查看器的5个核心优势

ImageGlass终极指南&#xff1a;免费开源图像查看器的5个核心优势 【免费下载链接】ImageGlass &#x1f3de; A lightweight, versatile image viewer 项目地址: https://gitcode.com/gh_mirrors/im/ImageGlass 还在为Windows系统自带的图片查看器功能单一而烦恼吗&…

作者头像 李华
网站建设 2026/9/2 0:15:10

Open-AutoGLM实战案例:自动收集美团优惠券操作流程

Open-AutoGLM实战案例&#xff1a;自动收集美团优惠券操作流程 1. 引言&#xff1a;让AI帮你“动手”完成手机任务 你有没有这样的经历&#xff1f;每天打开美团、大众点评&#xff0c;翻来覆去地找各种满减券、限时折扣&#xff0c;点来点去不仅费时间&#xff0c;还容易漏掉…

作者头像 李华
网站建设 2026/8/29 7:52:08

【办公类-124-01】20260121Python批量修改“园园通改版后的幼儿数据缺失(出生地区县、籍贯区县)”

背景需求&#xff1a; 上周“园园通”&#xff08;上海的幼儿数据采集平台&#xff09;突然更新的“直报通”的页面 导致全部幼儿都变成需要处理的数据 点开一看“总园-中大班”幼儿信息页&#xff0c;原来是幼儿的“出生地区县、籍贯城市、籍贯区县”需要更新。 几百条要参考…

作者头像 李华
网站建设 2026/8/25 15:15:47

数据库迷局:select for update 锁的真相,90%的开发者都踩过坑!

一、开篇直击痛点:为什么需要 select for update 锁? 做后端开发的同学,大概率遇到过这样的场景: 电商秒杀:100 件商品,1000 人抢购,如何避免超卖? 余额支付:用户账户余额 100 元,同时发起两笔 80 元支付,如何防止余额为负? 库存扣减:多线程同时操作同一商品库存…

作者头像 李华