Ubuntu 20.04服务器Cron执行备份脚本时出现LOGNAME/USER与有效用户ID不匹配警告的问题咨询
Ubuntu 20.04服务器Cron执行备份脚本时出现LOGNAME/USER与有效用户ID不匹配警告的问题咨询
嗨,我来帮你分析和解决这个问题~
首先回答你最关心的:这个警告需要担心吗?
这个警告本身通常不会直接导致你的备份脚本失效(从你描述来看备份还能正常工作对吧?),但它提示了一个环境不一致的小问题——Cron在运行脚本时,LOGNAME或USER环境变量和实际的有效用户ID不匹配。虽然当前不影响备份,但长期来看可能会让某些依赖这些环境变量的命令出问题,所以还是建议修复掉。
为什么只有这一个脚本触发警告?
大概率是这个buprod.sh脚本里有特殊操作,或者Cron给它的环境配置有差异:
- 可能脚本里手动修改过
USER或LOGNAME环境变量(比如写了export USER=xxx这类代码); - 脚本里可能调用了
sudo、su这类会切换有效用户的命令; - 也有可能Cron给这个脚本分配的环境变量不全,缺失了正确的
USER/LOGNAME值。
具体的修复方法
你可以按下面的步骤尝试解决:
- 检查脚本内容:打开
/home/user/buprod.sh,看看有没有手动设置USER或LOGNAME的代码,如果有,去掉或者修正成你当前的用户名(也就是matth)。 - 在crontab里明确设置环境变量:
编辑你的用户crontab(执行crontab -e),在脚本执行的任务行之前,或者在crontab的顶部添加以下内容:
也可以把常用的环境变量都统一配置好,比如:USER=matth LOGNAME=matthSHELL=/bin/bash PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin USER=matth LOGNAME=matth - 检查脚本中的切换用户操作:如果脚本里用了
sudo执行某些命令,先确认是否真的需要——如果是普通用户权限就能完成的操作,去掉sudo;如果必须用sudo,确保你已经配置了免密sudo,并且可以加上-E参数保留当前环境变量,比如sudo -E your_command。 - 手动测试脚本:以
matth用户身份在终端手动执行/home/user/buprod.sh,看看会不会出现同样的警告。如果手动执行没问题,那基本可以确定是Cron的环境变量问题,按步骤2配置就能解决。
备注:内容来源于stack exchange,提问作者Matth
相关产品推荐
相关产品推荐

