You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker中Cron正常运行却持续报错/bin/sh: root: command not found如何解决?

解决Docker中CentOS7 Cron报错/bin/sh: root: command not found的问题

方案1:修改crontab文件格式(推荐)

你的crontab文件采用了系统级cron配置的格式(包含用户字段root),但你通过crontab /etc/cron.d/server-cron命令将其加载为用户级crontab,两种格式不兼容。

修改crontab文件内容,去掉用户字段root:

* * * * * echo "Hello world" >> /var/log/cron.log 2>&1

方案2:保留系统级配置,无需手动加载crontab

如果想保留带用户字段的系统级cron格式,只需删除Dockerfile中的RUN crontab /etc/cron.d/server-cron命令。因为/etc/cron.d/目录下的配置文件会被cron服务自动扫描加载,不需要手动执行crontab命令导入。

修改后的Dockerfile:

FROM centos:7
RUN yum -y install crontabs
COPY --chmod=0644 dockerfiles/crontab /etc/cron.d/server-cron
RUN touch /var/log/cron.log
CMD crond && tail -f /var/log/cron.log

错误原因说明

  • 系统级cron配置(如/etc/cron.d/、/etc/crontab)的格式是:* * * * * 用户 命令,必须指定执行命令的用户。
  • 用户级crontab(通过crontab -e编辑或crontab命令导入的)格式是:* * * * * 命令,不需要指定用户——因为该crontab属于当前用户(这里是root),命令默认以该用户身份执行。

你之前的操作把系统级格式的配置导入到用户级crontab中,cron会把root当成要执行的命令,从而触发/bin/sh: root: command not found错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 06:22:39