测试开机启动脚本真实体验:轻松实现后台自动化

测试开机启动脚本真实体验:轻松实现后台自动化

在日常使用Linux系统的过程中,我们常常会遇到一些需要“开机自动运行”的任务场景——比如启动某个监控服务、自动挂载磁盘、运行AI推理脚本,或者定时拉取数据。如果每次重启后都要手动执行一遍命令,不仅麻烦还容易遗漏。

最近我在使用一个名为“测试开机启动脚本”的镜像环境时,正好需要配置一个后台自动化任务。经过实际操作和多次验证,我总结出了一套稳定、简单且适用于大多数Ubuntu系统的开机自启方案。本文将结合真实使用体验,手把手带你完成整个流程,确保你也能一次成功。


1. 明确目标与使用场景

我的实际需求是什么?

在这个镜像环境中,我希望实现以下功能:

  • 系统开机后自动运行一个自定义Shell脚本
  • 脚本执行某些初始化操作(如输出日志、进入指定目录、启动程序)
  • 整个过程无需人工干预,后台静默运行
  • 即使断电重启,任务依然能自动触发

这其实是一个非常典型的轻量级自动化需求,广泛应用于服务器部署、边缘设备管理、开发测试环境搭建等场景。

为什么选择rc.local方式?

虽然现代Linux系统推荐使用systemd服务来管理开机任务,但对于新手或临时性任务来说,rc.local方式更直观、易懂、调试方便。尤其在一些预置镜像中,rc.local往往已经被保留兼容,适合快速上手。


2. 创建并测试自定义启动脚本

### 2.1 编写Shell脚本文件

首先,在系统中创建一个专门存放脚本的目录,并新建我们的启动脚本。

mkdir -p /home/user/Documents/scripts cd /home/user/Documents/scripts touch auto_run_test.sh

用文本编辑器打开这个文件:

nano auto_run_test.sh

填入如下内容:

#!/bin/bash echo "helloStartup" > ./output.txt cd /home/user/mywbc_v5_usb/build echo "EnterBuildDir" > ./output.txt ./sim/sim echo "AfterSim" > ./outputend.txt
关键点说明:
  • #!/bin/bash:这是所有Shell脚本的标准开头,告诉系统用bash解释器执行。
  • 每一行都是普通命令,你可以替换成任何你想自动运行的操作,比如启动Python脚本、运行Docker容器、发送通知等。
  • 输出重定向>是为了验证脚本是否被执行——只要看到文件生成,就说明成功了。

### 2.2 给脚本添加可执行权限

Linux默认不允许随意执行脚本,必须显式授权。

sudo chmod +x auto_run_test.sh

建议做法:不要使用777这种过于宽松的权限。+x表示添加执行权限,已经足够安全又有效。

你可以通过以下命令验证是否设置成功:

ls -l auto_run_test.sh

如果看到类似-rwxr-xr-x的权限标识,说明可以执行。

### 2.3 手动运行一次,确认无误

在加入开机启动前,务必先手动运行测试:

./auto_run_test.sh

检查当前目录下是否生成了output.txtoutputend.txt文件,并查看内容是否正确:

cat output.txt cat outputend.txt

只有当脚本能独立正常运行时,才适合放入开机流程。


3. 配置 rc.local 实现开机自启

### 3.1 检查 rc.local 是否存在

并不是所有Ubuntu版本都默认启用rc.local。我们需要先确认它是否存在:

ls /etc/rc.local

如果提示“No such file or directory”,说明你需要手动创建。

但大多数情况下,该文件是存在的,只是可能没有启用。

### 3.2 确保 rc.local 可写

为了让我们可以修改内容,先赋予写权限:

sudo chmod +w /etc/rc.local

注意:这里也不建议直接chmod 777+w更加精准且安全。

### 3.3 编辑 rc.local 文件

使用编辑器打开:

sudo nano /etc/rc.local

确保文件内容结构如下:

#!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. # 添加你的命令在这里 cd /home/user/Documents/scripts sh auto_run_test.sh exit 0
重点注意事项:
  • 必须保证exit 0在最后一行,否则系统可能卡住。
  • 脚本路径一定要写绝对路径,避免因工作目录不同导致失败。
  • 使用sh调用脚本更稳妥,兼容性更好。

### 3.4 设置 rc.local 可执行

为了让系统真正执行这个脚本,还需要给它加上执行权限:

sudo chmod +x /etc/rc.local

4. 替代方案:适用于无 rc.local 的系统

有些新版Ubuntu(如18.04以后)默认不再包含rc.local,或者其服务未启用。这时我们可以采用另一种简单方法——修改/etc/profile

### 4.1 修改 profile 文件

sudo nano /etc/profile

滚动到底部,在最后一行添加:

if [ -f /home/user/Documents/scripts/auto_run_test.sh ]; then sh /home/user/Documents/scripts/auto_run_test.sh fi
原理说明:
  • /etc/profile是用户登录时加载的全局环境配置文件
  • 当你通过图形界面或终端登录时,这段代码就会被执行
  • 适合那些不需要“系统级立即启动”、而是在“用户登录后自动运行”的场景

⚠️ 注意:这种方式依赖于用户登录,如果你希望无人值守运行(如服务器),仍建议使用systemd或恢复rc.local服务。


5. 重启验证效果

一切准备就绪,现在进行最终测试。

sudo reboot

系统重启后,等待几十秒让脚本有时间执行,然后检查目标目录:

ls /home/user/Documents/scripts/ cat /home/user/Documents/scripts/outputend.txt

如果能看到输出"AfterSim",并且相关程序已启动,那就说明——你的开机自动化已经成功了!


6. 常见问题与解决方案

### 6.1 脚本没执行?从哪里排查?

  1. 检查权限

    ls -l /etc/rc.local ls -l /home/user/Documents/scripts/auto_run_test.sh

    确保都有执行权限(x)。

  2. 查看日志

    sudo tail -f /var/log/syslog | grep rc.local

    如果rc.local启动失败,通常会在日志中报错。

  3. 确认 rc-local.service 是否启用

    systemctl status rc-local

    如果显示 inactive,需要用以下命令启用:

    sudo systemctl enable rc-local

### 6.2 路径问题导致脚本找不到文件?

很多脚本在手动运行时正常,但开机时报错“no such file or directory”。这是因为工作目录不一致

✅ 解决办法:在脚本开头固定工作目录:

#!/bin/bash cd "$(dirname "$0")" # 切换到脚本所在目录

这样无论从哪调用,都会以脚本自身位置为基准路径。

### 6.3 如何让脚本后台运行不阻塞系统启动?

如果你的脚本会持续运行(比如监听服务),直接放在rc.local中会导致系统启动卡住。

✅ 正确做法:使用nohup+&放入后台:

nohup sh /home/user/Documents/scripts/auto_run_test.sh > /tmp/startup.log 2>&1 &

这样既不会阻塞启动过程,又能记录日志便于排查。


7. 进阶建议:向 systemd 平滑过渡

虽然rc.local简单好用,但在生产环境中,更推荐使用systemd来管理开机任务。它支持依赖控制、日志追踪、状态监控等功能。

### 7.1 创建一个简单的 systemd 服务

创建服务文件:

sudo nano /etc/systemd/system/my-startup-script.service

内容如下:

[Unit] Description=Custom Startup Script After=multi-user.target [Service] Type=oneshot ExecStart=/bin/sh /home/user/Documents/scripts/auto_run_test.sh RemainAfterExit=yes [Install] WantedBy=multi-user.target

启用并启动服务:

sudo systemctl daemon-reexec sudo systemctl enable my-startup-script.service

下次重启时,系统会自动按顺序执行该服务。

优势:

  • 更标准、更可控
  • 可通过systemctl status my-startup-script查看运行状态
  • 日志统一归集到journalctl

8. 总结

通过本次对“测试开机启动脚本”镜像的真实使用体验,我完整走通了从脚本编写、权限设置、rc.local配置到最终验证的全流程。这套方法不仅适用于个人开发环境,也可以作为小型项目的自动化基础。

回顾关键步骤:

  1. 编写脚本并测试可用性
  2. 设置合理权限(+x)
  3. 修改/etc/rc.local添加调用命令
  4. 确保rc.local自身可执行
  5. 重启验证结果
  6. 备选方案:使用/etc/profile或转向systemd

无论你是想自动启动AI模型、运行爬虫、还是维护一个嵌入式设备,掌握这项技能都能大幅提升效率和稳定性。


获取更多AI镜像

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1192189.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GPEN在边缘设备部署可行吗?算力需求与优化方向分析

GPEN在边缘设备部署可行吗?算力需求与优化方向分析 你有没有遇到过这样的情况:手头有一张模糊的老照片,想修复却找不到合适的工具?或者客户发来一张低质量自拍,需要快速提升画质但又不想花几个小时精修?这…

Qwen3-0.6B部署教程:从零开始配置GPU环境,10分钟快速上线

Qwen3-0.6B部署教程:从零开始配置GPU环境,10分钟快速上线 你是否也想快速体验最新一代通义千问小模型的推理能力?Qwen3-0.6B作为轻量级大模型,不仅响应速度快、资源占用低,还能在单张消费级显卡上流畅运行。本文将带你…

CookieCloud终极指南:实现多设备无缝登录的完整解决方案

CookieCloud终极指南:实现多设备无缝登录的完整解决方案 【免费下载链接】CookieCloud CookieCloud是一个和自架服务器同步Cookie的小工具,可以将浏览器的Cookie及Local storage同步到手机和云端,它支持端对端加密,可设定同步时间…

BiliTools AI智能总结:5个技巧让你3分钟掌握B站视频精华

BiliTools AI智能总结:5个技巧让你3分钟掌握B站视频精华 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持视频、音乐、番剧、课程下载……持续更新 项目地址: https://gitcode.com/GitHub_Trending/bilit/Bi…

GPT-OSS WEBUI快捷键:提升操作效率技巧

GPT-OSS WEBUI快捷键:提升操作效率技巧 你是否在使用 GPT-OSS 20B 模型的 WebUI 时,频繁点击鼠标、反复切换窗口,感觉操作繁琐又低效?其实,这个基于 vLLM 实现的 OpenAI 开源模型推理界面,内置了一套高效快…

B站全能下载神器BiliTools:5分钟上手高清视频批量下载终极指南

B站全能下载神器BiliTools:5分钟上手高清视频批量下载终极指南 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持视频、音乐、番剧、课程下载……持续更新 项目地址: https://gitcode.com/GitHub_Trending/bi…

TwitchPotPlayer:终极PotPlayer扩展实现无广告Twitch直播观看

TwitchPotPlayer:终极PotPlayer扩展实现无广告Twitch直播观看 【免费下载链接】TwitchPotPlayer Extensions for PotPlayer to watch Twitch streams without streamlinks or any crap. 项目地址: https://gitcode.com/gh_mirrors/tw/TwitchPotPlayer 还在为…

FFXVIFix游戏优化秘籍:让你的《最终幻想16》体验焕然一新

FFXVIFix游戏优化秘籍:让你的《最终幻想16》体验焕然一新 【免费下载链接】FFXVIFix A fix for Final Fantasy XVI that adds ultrawide/narrower support, uncaps framerate in cutscenes, lets you adjust gameplay FOV and much more. 项目地址: https://gitco…

企业安全新思路:用CAM++构建语音门禁验证

企业安全新思路:用CAM构建语音门禁验证 1. 引言:当声纹成为新的“钥匙” 你有没有想过,未来进入办公室可能不再需要刷卡或输入密码?只需要说一句话,系统就能识别出你是谁,并自动开门。这听起来像科幻电影…

unet person image cartoon compound多场景落地:电商/社交应用实战

unet person image cartoon compound多场景落地:电商/社交应用实战 1. 引言:人像卡通化,不只是技术,更是商业价值的放大器 你有没有想过,一张普通的人像照片,能变成朋友圈刷屏的卡通头像?或者…

终极免费方案:如何快速完成CAJ转PDF格式转换

终极免费方案:如何快速完成CAJ转PDF格式转换 【免费下载链接】caj2pdf 项目地址: https://gitcode.com/gh_mirrors/caj/caj2pdf 还在为知网CAJ格式文献无法在移动设备上阅读而烦恼?caj2pdf这款开源工具能够完美解决CAJ格式的兼容性问题&#xff…

IDM破解技术深度解析:解锁无限下载体验的完整实践方案

IDM破解技术深度解析:解锁无限下载体验的完整实践方案 【免费下载链接】IDM-Activation-Script IDM Activation & Trail Reset Script 项目地址: https://gitcode.com/gh_mirrors/id/IDM-Activation-Script 还在为Internet Download Manager的试用期限制…

立省 200 刀!Claude Code 接入 GMI Cloud Inference Engine API 教程>>

GMI Cloud Inference Engine 是全球 AI 模型统一接入与在线使用的“高性能推理引擎平台”,底层搭载 H100/H200 芯片,集成全球近百个最前沿的大语言模型和视频生成模型,如 Gemini、Claude、Minimax、DeepSeek、GPT、Qwen、Kling 等&#xff0c…

BongoCat:当键盘敲击遇见萌宠陪伴

BongoCat:当键盘敲击遇见萌宠陪伴 【免费下载链接】BongoCat 让呆萌可爱的 Bongo Cat 陪伴你的键盘敲击与鼠标操作,每一次输入都充满趣味与活力! 项目地址: https://gitcode.com/gh_mirrors/bong/BongoCat 在数字世界的单调节奏中&…

如何用网页时光机快速找回消失的重要网页:完整操作指南

如何用网页时光机快速找回消失的重要网页:完整操作指南 【免费下载链接】wayback-machine-webextension A web browser extension for Chrome, Firefox, Edge, and Safari 14. 项目地址: https://gitcode.com/gh_mirrors/wa/wayback-machine-webextension 你…

深度解析Figma设计数据同步难题:从连接异常到性能瓶颈的完整实战指南

深度解析Figma设计数据同步难题:从连接异常到性能瓶颈的完整实战指南 【免费下载链接】Figma-Context-MCP MCP server to provide Figma layout information to AI coding agents like Cursor 项目地址: https://gitcode.com/gh_mirrors/fi/Figma-Context-MCP …

OMS运维管理平台完整指南:7天构建企业级自动化运维体系

OMS运维管理平台完整指南:7天构建企业级自动化运维体系 【免费下载链接】oms OMS运维管理平台 项目地址: https://gitcode.com/gh_mirrors/om/oms 在数字化转型的今天,企业运维效率直接决定了业务竞争力。OMS运维管理平台作为开源自动化运维解决方…

ADB Explorer:让Android文件管理变得前所未有的简单

ADB Explorer:让Android文件管理变得前所未有的简单 【免费下载链接】ADB-Explorer A fluent UI for ADB on Windows 项目地址: https://gitcode.com/gh_mirrors/ad/ADB-Explorer 还在为复杂的ADB命令行操作而烦恼吗?ADB Explorer正是您需要的完美…

麦橘超然推理耗时分析,每步去噪都清晰可见

麦橘超然推理耗时分析,每步去噪都清晰可见 1. 引言:为什么我们需要“看得见”的生成过程? 你有没有这样的经历:输入提示词,点击“生成”,然后盯着转圈的进度条,心里没底地等上几十秒——却不知…

科大智能冲刺港股:9个月营收19亿,期内利润7348万 黄明松套现2亿

雷递网 雷建平 1月20日科大智能科技股份有限公司(简称:“科大智能”)日前递交招股书,准备在港交所上市。科大智能已在A股上市,截至今日收盘,科大智能股价为12.42元,市值为96.66亿元。一旦在港股…