SSH 登陆服务器locale告警(-bash: warning: setlocale:)的处理方法
使用ssh远程登陆 IDC机房服务器,发现老是出现如下告警信息:
1 2 3 4 5 | - bash : warning: setlocale: LC_CTYPE: cannot change locale (en_US.UTF-8): No such file or directory - bash : warning: setlocale: LC_COLLATE: cannot change locale (en_US.UTF-8): No such file or directory - bash : warning: setlocale: LC_MESSAGES: cannot change locale (en_US.UTF-8): No such file or directory - bash : warning: setlocale: LC_NUMERIC: cannot change locale (en_US.UTF-8): No such file or directory - bash : warning: setlocale: LC_TIME: cannot change locale (en_US.UTF-8): No such file or directory |
原因分析:
1 2 | 根据上面登录警告提示可知,系统已经设置了默认地区_语言.字符集为en_US.UTF-8,但是在系统中没有定义对应的locale文件, 所以只需要手动生成这个locale文件即可! |
解决办法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | [root@centos6-vm01 ~] # vim /etc/environment #添加下面两行内容 LANG= "en_US.UTF-8" LC_ALL= [root@centos6-vm01 ~] # source /etc/environment [root@centos6-vm01 ~] # vim /etc/sysconfig/i18n LANG= "en_US.UTF-8" SYSFONT= "latarcyrheb-sun16" [root@centos6-vm01 ~] # cat /etc/sysconfig/i18n 然后执行下面命令,生成 en_US.UTF-8这个字符集的locale文件 [root@centos6-vm01 ~] # localedef -v -c -i en_US -f UTF-8 en_US.UTF-8 如上操作后,再次 ssh 登陆后就不会出现这条告警信息了。 |
如果出现:-bash: warning: setlocale: LC_ALL: cannot change locale (zh_CN.UTF-8)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 解决办法 [root@localhost ~] # vim /etc/sysconfig/i18n LANG= "zh_CN.UTF-8" LC_ALL= "zh_CN.UTF-8" SYSFONT= "latarcyrheb-sun16" 第一行解决了中文乱码问题 第二行解决了 "LC_ALL: cannot change locale (zh_CN.UTF-8)" 的问题。 [root@localhost ~] # source /etc/sysconfig/i18n 接着安装: [root@localhost ~] # yum install glibc-common kde-l10n-Chinese 安装之后,重启服务器,上述问题消失。 |
注意:不同类型的服务器配置方法会有差异,需要根据实际机器情况,多尝试一些方法,才能解决问题。
=======================================================================
也有可能是系统中的glibc和locale的库版本不兼容。
解决办法:删除locale库再重建一下,前提是你的文件系统中要有相应的数据文件。
1 2 3 4 | [root@localhost ~] # rm -f /usr/lib/locale/locale-archive [root@localhost ~] # localedef -i en_US -f ISO-8859-1 -A /usr/share/locale/locale.alias en_US [root@localhost ~] # localedef -i zh_CN -f GB2312 -A /usr/share/locale/locale.alias zh_CN [root@localhost ~] # yum -y reinstall glibc-common |
======================================================================
再看一个在centos7系统上使用/bin/sh或su命令出现的告警:warning: setlocale: LC_ALL: cannot change locale (zh_CN.UTF-8) ,解决办法如下(注意:这种方法针对的是centos7,centos6系统不一样):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | [root@uatblockchain04 ~] # locale locale: Cannot set LC_CTYPE to default locale: No such file or directory locale: Cannot set LC_MESSAGES to default locale: No such file or directory locale: Cannot set LC_ALL to default locale: No such file or directory 在物理机上,只要执行: [root@localhost ~] # yum -y install kde-l10n-Chinese telnet [root@localhost ~] # yum -y reinstall glibc-common 还需要修改: [root@localhost ~] # vim /etc/locale.conf LC_ALL= "zh_CN.UTF-8" [root@localhost ~] # source /etc/locale.conf ---------------------------------------------------------------------- 注意如果是在在Dockerfile里面执行的时候,就不太一样了: 必须执行三个步骤才不会出错 yum -y install kde-l10n-Chinese telnet && \ yum -y reinstall glibc-common &&\ yum clean all && \ localedef -c -f UTF-8 -i zh_CN zh_CN.utf8 && \ 或加上 cat /dev/null > /etc/locale .conf && echo "LC_ALL=\"zh_CN.UTF-8\"" > /etc/locale .conf 这样才可以保证中文不会有问题。 其中碰到一个情况:在基础镜像的再安装软件的时候再次碰到这个异常提示 最后的处理方案是:dockerfile构建过程执行警告的地方后,再执行一次 localedef -c -f UTF-8 -i zh_CN zh_CN.utf8 |
*************** 当你发现自己的才华撑不起野心时,就请安静下来学习吧!***************
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
2017-01-04 Haproxy和Nginx负载均衡测试效果对比记录
2017-01-04 Heartbeat基础知识-运维小结
2017-01-04 Keepalived基础知识-运维小结