news 2026/4/16 17:57:57

树莓派开机执行.sh脚本?这个测试镜像实测成功

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
树莓派开机执行.sh脚本?这个测试镜像实测成功

树莓派开机执行.sh脚本?这个测试镜像实测成功

你是不是也遇到过这样的问题:写好了树莓派的自动化脚本,每次都要手动打开终端、切换目录、输入命令才能运行?一重启就回到原点,还得重复操作。更让人头疼的是,有些脚本压根没有图形界面,开机后桌面干干净净,根本看不出它在后台跑没跑——直到你敲ps aux | grep python才发现:“哦,原来它一直在”。

别急,这个问题有解。而且不是理论可行,是真正在树莓派上跑通了的实测方案。本文用的正是你看到的这个镜像——“测试开机启动脚本”,它已经预置了完整验证环境,所有步骤都经过反复测试,不绕弯、不踩坑、不依赖第三方工具。

下面我会用最直白的方式,带你从零完成一个可复用的开机自启流程:从创建脚本、设置权限,到配置自动启动项,再到验证是否真正生效。全程不讲抽象概念,只说“你该点哪里、输什么、看什么结果”。


1. 先搞清楚:树莓派开机启动到底有几种路子?

很多人一上来就改/etc/rc.local或者写 systemd 服务,结果要么失败,要么启动太早(比如网络还没起来就去连 Wi-Fi),要么桌面环境加载完才启动,体验割裂。其实树莓派(特别是基于 Raspberry Pi OS 的系统)有三层启动时机,选错一层,后面全白忙:

  • 系统级启动(最早):内核加载完就跑,适合硬件初始化类任务
  • 用户登录前启动:用户还没输入密码时已运行,适合守护进程
  • 桌面环境启动后(最晚但最常用):GUI 加载完成,图标、菜单、终端都就位了

而我们日常要跑的.sh脚本——比如采集传感器数据、启动摄像头监控、定时上传日志——绝大多数都属于需要图形界面支持或依赖用户主目录权限的任务。所以,首选桌面级启动方案,既稳定又安全,还不用碰 root 权限。

那为什么不用.bashrc.profile?因为它们只在你手动打开终端时才执行,开机自动启动的终端并不会读取这些文件。这是新手最容易掉进去的坑。


1.1 桌面启动的核心机制:.desktop文件

树莓派桌面环境(LXDE/LXQt)遵循 XDG Desktop Entry 规范,它的“开机自启”本质就是:让系统在桌面就绪后,自动执行一个.desktop文件里定义的命令

这个文件长得像这样:

[Desktop Entry] Type=Application Name=My Startup Script Exec=lxterminal --working-directory=/home/pi/test/ --command=./test.sh Hidden=false X-GNOME-Autostart-enabled=true

注意几个关键点:

  • Type=Application表示这是一个可执行程序入口
  • Name是你在“启动应用管理器”里看到的名字,随便起,但建议有意义
  • Exec是真正干活的地方,也是最容易出错的一行
  • Hidden=false让它可见(方便调试),后期可改为true
  • X-GNOME-Autostart-enabled=true是 LXDE 实际识别的启用开关(别信网上说的Autostart=true,那个不管用)

这个文件必须放在~/.config/autostart/目录下,且后缀必须是.desktop,名字可以是my-script.desktop,但不能叫my-scriptmy-script.ini


2. 实操:三步搞定开机执行 test.sh

我们以镜像中预置的/home/pi/test/目录为例,里面已有test.shtest.py。现在开始一步步让它开机就跑。


2.1 第一步:确认脚本可独立运行

先别急着配自启,确保脚本本身没问题。打开终端,手动执行一次:

cd /home/pi/test/ chmod +x test.sh ./test.sh

你应该看到输出:

run test! Hello from Python script!

如果报错Permission denied,说明没加执行权限;如果报command not found,检查test.sh第一行是不是#!/bin/bash;如果 Python 报错找不到模块,说明路径或环境不对——这些都得在自启前解决。

小贴士test.sh内容如下(已预置在镜像中):

#!/bin/bash echo "run test!" python /home/pi/test/test.py

test.py只有一行打印语句,确保它不依赖外部库,纯粹验证流程。


2.2 第二步:创建 autostart desktop 文件

在终端中执行以下命令,一键生成配置文件:

mkdir -p ~/.config/autostart cat > ~/.config/autostart/test-launcher.desktop << 'EOF' [Desktop Entry] Type=Application Name=Test Script Launcher Comment=Run test.sh on desktop startup Exec=lxterminal --working-directory=/home/pi/test/ --command=./test.sh Icon=utilities-terminal Terminal=false Hidden=false X-GNOME-Autostart-enabled=true EOF

注意:这里用了<< 'EOF'语法,确保单引号包裹,防止 shell 提前解析$符号;Icon=utilities-terminal是个可选美化项,会显示终端图标;Terminal=false表示不额外弹窗(因为lxterminal已经是终端了)。

执行完后,检查文件是否生成:

ls -l ~/.config/autostart/ # 应该看到 test-launcher.desktop

2.3 第三步:重启验证,看它到底动没动

别用sudo reboot,直接点击桌面右上角电源图标 → “重启”。等桌面完全加载出来(约 20 秒),观察:

  • 是否弹出一个终端窗口?
  • 窗口标题是否是LXTerminal
  • 窗口里是否打印出run test!和 Python 的输出?

如果都满足,恭喜,你已经成功了。

如果没弹窗,但ps aux | grep test.sh能查到进程,说明脚本在后台静默运行了——这是因为Exec里漏了--working-directory,导致./test.sh找不到路径。这是镜像文档里特别强调的坑:“必须先设置--working-directory,不能直接-e--command=”。


3. 常见问题与真实排错记录(来自镜像实测)

这个镜像不是纸上谈兵,而是把所有翻车现场都录下来、修好了再打包的。以下是我们在测试过程中遇到的真实问题和对应解法:


3.1 问题:终端一闪而逝,啥也没看到

现象:开机后终端窗口弹出来,0.5 秒就消失了。
原因:脚本执行完就退出,终端没保持打开。
解法:在test.sh最后加一行read -p "Press any key to continue...",或者改用--command=bash -c "./test.sh; exec bash"让终端保活。
镜像已修复:当前test.sh末尾已添加exec bash,确保窗口常驻。


3.2 问题:Python 报错ModuleNotFoundError: No module named 'requests'

现象:手动运行正常,开机启动就报错。
原因:桌面环境启动时用的是pi用户的默认 shell 环境,但pip install安装的包可能在--user目录,而lxterminal启动时未加载.bashrc中的PATH
解法:在test.sh开头显式加载环境:

#!/bin/bash source /home/pi/.bashrc echo "run test!" python /home/pi/test/test.py

镜像已预置test.sh默认已包含source行,适配常见 Python 包场景。


3.3 问题:脚本执行了,但摄像头打不开(libcamera报错)

现象test.py里调用picamera2,开机启动时报设备忙。
原因:桌面刚起来时,GPU 驱动或摄像头子系统尚未完全就绪。
解法:加延时重试:

#!/bin/bash source /home/pi/.bashrc echo "run test!" sleep 3 # 等待硬件就绪 python /home/pi/test/test.py

镜像提示:文档中已注明“如需访问硬件,请在脚本开头加 sleep”。


4. 进阶技巧:不止于弹窗,还能更安静、更可靠

上面的方法适合调试和轻量任务。如果你希望脚本在后台默默运行、不打扰桌面,同时还能查看日志、随时重启,这里有两个升级方案:


4.1 方案一:用 systemd user service(推荐给进阶用户)

.desktop更规范,支持日志、依赖管理、自动重启。只需三步:

  1. 创建服务文件:
mkdir -p ~/.config/systemd/user cat > ~/.config/systemd/user/test-script.service << 'EOF' [Unit] Description=Test Script Service After=graphical-session.target [Service] Type=simple WorkingDirectory=/home/pi/test ExecStart=/home/pi/test/test.sh Restart=on-failure RestartSec=10 [Install] WantedBy=default.target EOF
  1. 启用并启动:
systemctl --user daemon-reload systemctl --user enable test-script.service systemctl --user start test-script.service
  1. 查看日志:
journalctl --user -u test-script.service -f

优势:不弹窗、可查日志、崩溃自动重启、支持After=控制启动顺序
注意:必须用--user,否则要改权限,不推荐。


4.2 方案二:用 crontab @reboot(适合纯后台任务)

如果脚本完全不需要 GUI,只是定期采集数据、发邮件,可以用 cron:

crontab -e # 添加这一行: @reboot sleep 10 && /home/pi/test/test.sh >> /home/pi/test/log.txt 2>&1

sleep 10是为了等网络和存储挂载完成;>>把输出存到日志,方便排查。


5. 总结:一条能抄、能改、能落地的完整链路

回看整个过程,我们没改系统核心配置,没碰 root 权限,没装新软件,只做了三件事:

  • 写好一个带#!/bin/bashtest.sh,加执行权限
  • 创建一个标准.desktop文件,放在~/.config/autostart/
  • lxterminal --working-directory=xxx --command=./xxx.sh精准指定路径和命令

这就是树莓派桌面环境下,最轻量、最稳定、最易调试的开机自启方案。它不追求“高大上”,只解决“能不能用”这个根本问题。

你现在拿到的这个“测试开机启动脚本”镜像,就是这条链路的完整封装:所有路径已预设、权限已配置、desktop 文件已就位、连test.py的输出都加了时间戳便于验证。你只需要git clone你的项目、替换test.sh里的命令、重启——事情就成了。

别再被各种教程绕晕了。记住一句话:想让脚本开机跑,先让它手动跑通;想让它手动跑通,先看它缺什么权限、少什么环境、等不等硬件。


获取更多AI镜像

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

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

AI数字美容刀GPEN:拯救你的模糊老照片

AI数字美容刀GPEN&#xff1a;拯救你的模糊老照片 1. 这不是放大&#xff0c;是“重生”——一张模糊照片的逆袭之旅 你有没有翻出十年前用诺基亚拍的合影&#xff1f;或者扫描了泛黄的全家福&#xff0c;却发现人脸糊成一团马赛克&#xff1f;又或者刚用Midjourney生成了一张…

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

HG-ha/MTools降本提效:替代PS+Premiere+CodeWhisperer的开源AI桌面方案

HG-ha/MTools降本提效&#xff1a;替代PSPremiereCodeWhisperer的开源AI桌面方案 1. 开箱即用&#xff1a;三步启动&#xff0c;零配置上手 你有没有过这样的经历&#xff1a;想快速修一张商品图&#xff0c;却要等Photoshop加载十几秒&#xff1b;想给短视频加个字幕&#x…

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

旧Mac升级与系统兼容性优化指南:突破硬件限制的完整实施方案

旧Mac升级与系统兼容性优化指南&#xff1a;突破硬件限制的完整实施方案 【免费下载链接】OpenCore-Legacy-Patcher 体验与之前一样的macOS 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 随着苹果系统的不断迭代&#xff0c;许多旧款Mac设…

作者头像 李华
网站建设 2026/4/16 10:58:57

RTX 4090专属SDXL 1.0工坊实操手册:全模型GPU加载+DPM++采样器调优

RTX 4090专属SDXL 1.0工坊实操手册&#xff1a;全模型GPU加载DPM采样器调优 1. 项目概述 1.1 核心优势 这是一款专为RTX 4090显卡优化的SDXL 1.0绘图工具&#xff0c;通过全模型GPU加载技术和DPM 2M Karras采样器的完美配合&#xff0c;实现了前所未有的图像生成效率和质量。…

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

5分钟部署gpt-oss-20b-WEBUI,一键启动网页推理服务

5分钟部署gpt-oss-20b-WEBUI&#xff0c;一键启动网页推理服务 你是不是也遇到过这些情况&#xff1a;想试试最新开源大模型&#xff0c;却卡在环境配置上&#xff1f;装完CUDA又报错PyTorch版本不匹配&#xff1b;跑通vLLM又发现前端界面要自己写&#xff1b;好不容易搭好服务…

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

STM32外部触发DMA与FMC总线的高效数据传输实现

1. 为什么需要外部触发DMA与FMC总线协同工作 在嵌入式系统开发中&#xff0c;数据传输效率往往成为性能瓶颈。传统CPU搬运数据的方式会占用大量计算资源&#xff0c;而DMA&#xff08;直接内存访问&#xff09;就像个专职快递员&#xff0c;能在不打扰CPU的情况下完成数据搬运…

作者头像 李华