求助:Cron执行Bash脚本时报错getpwnam() failed - user unknown
问题分析与解决
错误原因
你的cron任务语法存在问题:cron的标准格式为分钟 小时 日期 月份 星期 用户名 命令,你当前的任务行把cd误当作了用户名字段,系统找不到名为cd的用户,因此抛出getpwnam() failed - user unknown错误。
修复方案
方案1:修正cron任务行(推荐)
如果你是通过sudo crontab -e编辑的root用户crontab,无需额外指定用户名,直接编写命令部分即可。同时建议用&&替代;,确保切换目录成功后再执行脚本:
*/10 * * * * cd /var/trafficviewer/script && ./testfile.sh
方案2:直接使用脚本绝对路径
跳过目录切换步骤,直接调用脚本的绝对路径,避免路径相关问题:
*/10 * * * * /var/trafficviewer/script/testfile.sh
额外注意事项
- 脚本内部如果调用了其他命令(如
curl、python等),建议使用绝对路径(例如/usr/bin/curl而非curl),因为cron的环境变量PATH比登录会话的范围更窄。 - 若脚本依赖特定环境变量,可在脚本开头手动导出,示例:
export PATH=/usr/local/bin:/usr/bin:/bin
内容的提问来源于stack exchange,提问作者Codec737
相关产品推荐
相关产品推荐

