Crontab执行报错:root命令未找到问题排查求助
问题解决
核心错误原因
你当前的crontab条目格式错误:如果是通过crontab -e编辑的普通用户定时任务,条目里不需要指定root用户字段——crontab会把root当成要执行的命令,所以才会报错/bin/bash: root: command not found。
只有系统级定时任务(比如编辑/etc/crontab或/etc/cron.d/下的文件)才需要在时间字段后加上用户字段。
解决方案
方案1:以当前用户身份执行
如果不需要root权限,直接修改crontab条目,删除root字段:
50 11 * * * /home/user/web/domain.com/python/stepn/cron.sh >> /home/user/web/domain.com/python/stepn/cronlogs.log 2>&1
执行crontab -e保存修改即可。
方案2:以root身份执行
如果必须用root权限运行:
- 切换到root用户:
su root - 执行
crontab -e编辑root的定时任务,使用上述去掉root字段的条目; - 或者将条目添加到
/etc/crontab文件中,此时格式保留root字段是正确的:
50 11 * * * root /home/user/web/domain.com/python/stepn/cron.sh >> /home/user/web/domain.com/python/stepn/cronlogs.log 2>&1
其他说明
- 你将stepn文件夹组改为wheel的操作是合理的:root默认属于wheel组,这样能确保root对目录有访问权限,无需调整。
- 脚本中使用虚拟环境的绝对路径
/home/user/web/domain.com/python/stepn/venv/bin/python是正确的,避免了cron环境变量缺失导致的Python路径问题,无需修改。
内容的提问来源于stack exchange,提问作者jdoe
相关产品推荐
相关产品推荐

