You need to enable JavaScript to run this app. 树莓派4 OpenMediaVault定时任务报source not found错误求解
优惠活动
大模型
产品
解决方案
定价
更多

树莓派4 OpenMediaVault定时任务报source not found错误求解

问题核心原因

报错退出码127代表当前运行环境找不到指定命令,结合错误堆栈可直接定位根因:

  • OpenMediaVault执行自定义定时任务时,强制指定运行shell为/bin/sh
  • 树莓派系统(Raspbian/OMV基于Debian构建)的默认/bin/sh指向dash轻量shell,而非bash
  • source是bash的专属内置命令,dash shell中不存在该命令,仅支持使用.命令实现等价的脚本加载执行逻辑
可落地解决方案

按修改成本从低到高选择:

  • 直接替换定时任务中的执行命令,把source换为dash兼容的.命令:
    原命令:source /srv/dev-disk-by-uuid-e7874961-1866-43e8-9cdb-503276f500b6/Scripts/Scheduled\ Jobs/telegrambot.sh
    修改后:. /srv/dev-disk-by-uuid-e7874961-1866-43e8-9cdb-503276f500b6/Scripts/Scheduled\ Jobs/telegrambot.sh
    注:.与source功能完全等价,均为在当前shell环境下加载执行脚本,不会改变脚本原有运行逻辑。
  • 优化路径写法避免空格解析问题:将原路径中的\ 转义替换为全路径加双引号的形式,降低转义失效概率:
    . "/srv/dev-disk-by-uuid-e7874961-1866-43e8-9cdb-503276f500b6/Scripts/Scheduled Jobs/telegrambot.sh"
  • 若必须保留source语法,可在命令最外层显式调用bash解释器运行整个任务:
    bash -c 'source /srv/dev-disk-by-uuid-e7874961-1866-43e8-9cdb-503276f500b6/Scripts/Scheduled\ Jobs/telegrambot.sh'
注意事项
  • 所有命令修改必须在OpenMediaVault WebUI的定时任务配置页面操作,直接修改/var/lib/openmediavault/cron.d/目录下的生成文件会被系统后续配置重载覆盖,不生效
  • 修改保存后可手动触发一次任务验证执行结果,执行成功后不会再返回127退出码

内容的提问来源于stack exchange,提问作者ilMichigan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.01 19:45:07