news 2026/4/16 14:50:04

开机自动执行build和sim命令,开发效率翻倍

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
开机自动执行build和sim命令,开发效率翻倍

开机自动执行build和sim命令,开发效率翻倍

在嵌入式开发、仿真测试或持续集成环境中,每次开机后手动进入项目目录、编译代码、启动仿真程序(如./sim/sim)不仅繁琐,还容易出错。如果能实现开机自动执行 build 和 sim 命令,就能省去重复操作,让系统一启动就进入工作状态,大幅提升开发效率。

本文将带你一步步实现:如何通过一个简单的启动脚本,在系统开机时自动进入指定项目目录,执行构建任务并运行仿真程序。整个过程无需复杂配置,适合大多数基于 Linux 的开发环境,尤其是使用 Ubuntu 系统的开发者。

我们将以实际场景为例——你有一个位于/home/user/mywbc_v5_usb/build的项目,希望开机后自动执行./sim/sim启动仿真。最终效果是:按下电源键,系统启动完成后,仿真进程已经运行,日志文件已生成,一切准备就绪。


1. 创建自动化执行脚本

首先,我们需要编写一个 Shell 脚本,用来封装所有需要在开机时执行的操作。这个脚本可以放在用户文档目录下,便于管理。

1.1 创建脚本文件

建议创建一个专门存放脚本的目录,例如:

mkdir -p /home/user/Documents/scripts

然后创建脚本文件:

nano /home/user/Documents/scripts/auto_run_test.sh

输入以下内容:

#!/bin/bash # 记录启动开始 echo "System startup initiated" > /home/user/Documents/scripts/output.txt # 进入项目构建目录 cd /home/user/mywbc_v5_usb/build || { echo "Failed to enter build directory" >> /home/user/Documents/scripts/output.txt exit 1 } echo "Entered build directory successfully" >> /home/user/Documents/scripts/output.txt # 执行仿真程序 ./sim/sim & echo "Simulation process started" >> /home/user/Documents/scripts/output.txt

1.2 脚本说明

  • #!/bin/bash:声明使用 Bash 解释器。
  • cd /home/user/mywbc_v5_usb/build:切换到你的项目 build 目录,请根据实际情况修改路径。
  • || { ... }:如果切换失败,输出错误信息并退出。
  • ./sim/sim &:后台运行仿真程序,避免阻塞后续操作。
  • 日志写入output.txt,方便调试是否成功执行。

保存并退出编辑器(Ctrl+O → Enter → Ctrl+X)。


2. 设置脚本可执行权限

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

运行以下命令:

sudo chmod +x /home/user/Documents/scripts/auto_run_test.sh

提示:相比chmod 777+x更安全且符合最小权限原则。

验证是否生效:

ls -l /home/user/Documents/scripts/auto_run_test.sh

应看到类似-rwxr-xr-x权限标识。


3. 配置开机启动方式(推荐使用 rc.local)

Ubuntu 16.04 及部分旧版本支持rc.local机制,它会在多用户模式结束时执行一次,非常适合一次性初始化任务。

3.1 检查 rc.local 是否存在

ls /etc/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. exit 0

保存后设置可执行权限:

sudo chmod +x /etc/rc.local

3.2 修改 rc.local 内容

打开文件进行编辑:

sudo nano /etc/rc.local

exit 0之前添加如下内容:

# Start custom auto-run script cd /home/user/Documents/scripts && sh auto_run_test.sh || echo "Auto-run script failed" >> /home/user/Documents/scripts/output.txt

完整示例:

#!/bin/sh -e cd /home/user/Documents/scripts && sh auto_run_test.sh || echo "Auto-run script failed" >> /home/user/Documents/scripts/output.txt exit 0

注意

  • 使用sh而非sudo sh,因为rc.local本身以 root 权限运行。
  • 添加错误捕获逻辑,确保问题可追踪。

4. 替代方案:适用于无 rc.local 的新版本 Ubuntu

某些新版 Ubuntu(如 20.04+)默认不再启用rc.local,此时可通过修改/etc/profile实现类似效果。

4.1 编辑 profile 文件

sudo nano /etc/profile

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

# Auto-run simulation script on login if [ -f /home/user/Documents/scripts/auto_run_test.sh ]; then /bin/bash /home/user/Documents/scripts/auto_run_test.sh & fi

4.2 区别说明

方式触发时机执行次数用户上下文
rc.local系统启动时仅一次root
/etc/profile每次用户登录 shell每次登录一次当前登录用户

建议选择

  • 若希望仅启动一次,用rc.local
  • 若担心兼容性,可用profile,但注意可能多次触发

5. 测试与验证流程

完成配置后,必须通过重启来验证是否真正生效。

5.1 重启系统

sudo reboot

等待系统完全启动。

5.2 检查输出日志

登录后查看日志文件:

cat /home/user/Documents/scripts/output.txt

预期输出:

System startup initiated Entered build directory successfully Simulation process started

5.3 验证仿真进程是否运行

使用ps查看进程:

ps aux | grep sim/sim

若能看到相关进程,则说明启动成功。

5.4 排查常见问题

问题现象可能原因解决方法
output.txt 未生成路径错误或权限不足检查脚本路径、确保目录存在且可写
cd 失败路径拼写错误或目录未挂载使用绝对路径,确认项目目录存在
sim 程序未运行命令被阻塞或前台运行改为./sim/sim &后台运行
脚本无输出但系统正常rc.local 未启用检查systemctl status rc-local.service
多次重复执行使用了 profile 导致每次登录都跑改用 rc.local 或加锁机制防止重复

6. 进阶优化建议

虽然基础功能已实现,但在真实开发中,我们还可以进一步提升稳定性和实用性。

6.1 添加进程守护机制

防止仿真程序意外退出,可在脚本中加入循环检测:

while true; do if ! pgrep -f "./sim/sim" > /dev/null; then echo "$(date): Restarting simulation..." >> output.txt ./sim/sim & fi sleep 10 done

6.2 使用 systemd 服务(更现代的做法)

对于追求规范化的团队,推荐使用systemd替代rc.local

创建服务文件:

sudo nano /etc/systemd/system/sim-startup.service

内容如下:

[Unit] Description=Auto start simulation after boot After=multi-user.target [Service] Type=simple User=user ExecStart=/bin/bash /home/user/Documents/scripts/auto_run_test.sh Restart=always RestartSec=10 [Install] WantedBy=multi-user.target

启用服务:

sudo systemctl daemon-reexec sudo systemctl enable sim-startup.service sudo systemctl start sim-startup.service

优势:

  • 更好的日志管理(journalctl -u sim-startup.service
  • 自动重启支持
  • 标准化部署,易于维护

7. 总结

7.1 核心要点回顾

本文详细介绍了如何实现“开机自动执行 build 和 sim 命令”的完整方案,帮助开发者摆脱重复劳动,提升工作效率。主要步骤包括:

  1. 编写自动化脚本:封装cd./sim/sim等操作,并记录日志;
  2. 设置执行权限:使用chmod +x赋予脚本可执行能力;
  3. 配置开机启动
    • 推荐使用rc.local实现系统级单次启动;
    • 兼容方案使用/etc/profile实现登录时触发;
  4. 验证执行结果:通过日志和进程检查确认仿真已运行;
  5. 进阶优化:引入systemd服务或守护进程,增强稳定性。

8. 下一步建议

  • 将该脚本纳入版本控制,与项目代码一同管理;
  • 结合 CI/CD 工具,实现全自动部署与仿真;
  • 在团队内部推广此实践,统一开发环境初始化流程;
  • 探索图形化界面自动启动工具(如gnome-session-properties),适合非技术用户。

掌握这项技能后,你会发现:每天节省下来的几分钟,长期积累下来就是巨大的时间红利。更重要的是,自动化带来的确定性和一致性,能显著减少人为失误,让你更专注于核心开发工作。


获取更多AI镜像

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

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

Qwen3-Embedding-0.6B效果展示:语义相似度计算真准

Qwen3-Embedding-0.6B效果展示:语义相似度计算真准 1. 引言:为什么文本嵌入正在改变搜索与推荐 你有没有遇到过这种情况:在客服系统里输入“手机充不进电”,结果返回的却是“如何更换电池”的答案?或者在知识库中搜索…

作者头像 李华
网站建设 2026/4/16 11:03:39

零门槛体验CAM++说话人识别,在线服务快速搭建

零门槛体验CAM说话人识别,在线服务快速搭建 1. 引言:为什么你需要一个说话人识别系统? 你有没有遇到过这样的场景: 一段录音里有两个人在对话,你想知道其中某句话是不是同一个人说的?或者你正在做语音安全…

作者头像 李华
网站建设 2026/4/16 13:08:01

CreamApi:游戏DLC自动解锁工具的完整使用指南

CreamApi:游戏DLC自动解锁工具的完整使用指南 【免费下载链接】CreamApi 项目地址: https://gitcode.com/gh_mirrors/cr/CreamApi 还在为付费DLC无法体验完整游戏内容而烦恼吗?CreamApi作为一款革命性的游戏DLC自动化解锁工具,能够智…

作者头像 李华
网站建设 2026/4/15 13:51:07

如何通过KernelSU实现Android内核级权限管理:技术深度解析

如何通过KernelSU实现Android内核级权限管理:技术深度解析 【免费下载链接】KernelSU A Kernel based root solution for Android 项目地址: https://gitcode.com/GitHub_Trending/ke/KernelSU 在Android系统开发领域,权限管理一直是技术探索的重…

作者头像 李华
网站建设 2026/4/16 11:03:48

OpCore Simplify:颠覆传统Hackintosh配置的智能革命

OpCore Simplify:颠覆传统Hackintosh配置的智能革命 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 还在为复杂的OpenCore EFI配置而头疼吗…

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

macOS系统安装终极指南:OpCore Simplify一键配置黑苹果完整教程

macOS系统安装终极指南:OpCore Simplify一键配置黑苹果完整教程 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 还在为复杂的黑苹果配置流…

作者头像 李华