You need to enable JavaScript to run this app. OVH虚拟主机配置cron执行.sh脚本报Exec Format Error问题求助
优惠活动
大模型
产品
解决方案
定价
更多

OVH虚拟主机配置cron执行.sh脚本报Exec Format Error问题求助

OVH虚拟主机Cron任务报Exec Format Error 排查指南

首先排除无关影响因素:.htaccess 配置

  • .htaccess 是Apache Web服务器专属的分布式配置文件,仅作用于经Web服务器进入的HTTP请求流程。
  • Cron任务是OVH系统层面直接调度执行的独立进程,完全不经过Web服务链路,因此你配置的根目录重定向规则完全不会对cron执行造成任何影响,无需在这个方向调整配置。

核心报错原因说明

日志里的 Exec Format Error 本质是系统尝试拉起脚本时,无法匹配到有效的可执行解释器、或是找不到目标脚本路径导致的。这个问题和你SSH手动执行脚本正常的体感不冲突——因为SSH的交互登录环境和cron的隔离执行环境配置完全不一样,OVH共享主机的专属环境差异会带来几个高频踩坑点:

  • 相对路径写法失效
    你当前在后台填写的执行命令 ./www/script.sh 是相对路径,OVH cron任务启动时的默认工作目录是系统的cron运行目录,不是你的用户家目录,根本无法通过这个相对路径定位到你的脚本,很可能系统错加载了其他无关文件才报了格式错误。
  • 硬编码的解释器路径失效
    你脚本里写的 #!/bin/bash 是常规的bash路径,这个路径在你SSH登录的交互环境里是做了软链接映射的,但cron运行的隔离环境里没有这套映射规则,如果路径对不上,系统找不到对应解释器就会直接抛错。
  • 脚本换行符格式错误
    如果脚本是从Windows环境下编辑上传的,行尾是CRLF格式,shebang行末尾会带不可见的\r字符,系统会把/bin/bash\r当成完整的解释器路径去找,也会触发相同的Exec Format Error,这是OVH cron场景下最高发的问题。
  • 权限不匹配
    SSH登录下你对脚本的执行权限和cron进程的执行权限判定是分开的,如果脚本没有给所属用户开放可执行位,cron环境下也无法正常拉起脚本。

修复步骤

  1. 替换cron执行命令为绝对路径
    参照你日志里显示的真实脚本路径(形如/homez.1003/[你的FTP登录账号]/www/script.sh),把后台填的相对路径替换成这个完整绝对路径——不要用SSH里看到的/home/[ftp账号]/www/路径,这个是软映射路径,cron环境不认。
  2. 修正脚本内容
    把脚本开头的shebang行从#!/bin/bash改成#!/usr/bin/env bash,自动适配当前运行环境的解释器路径;同时检查脚本的换行符,用SSH执行cat -A script.sh查看行尾,如果出现^M标识,就用dos2unix script.sh命令转成Unix格式换行。
  3. 调整脚本权限
    给脚本开放所属用户的可执行权限,执行chmod 755 script.sh即可,不要使用777权限,不符合OVH共享主机的安全规则。
  4. 确认后台cron的语言选择保持Other,这个选项表示系统不套额外运行环境,直接执行你填写的shell命令,是运行bash脚本的正确选项。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.26 09:36:02