ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

SSH 登陆服务器locale告警(-bash: warning: setlocale:)的处理方法(转)

2021-08-25 14:31:06  阅读:217  来源: 互联网

标签:en UTF LC setlocale locale warning zh root


使用ssh远程登陆 IDC机房服务器,发现老是出现如下告警信息

-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

 

 

原因分析:

根据上面登录警告提示可知,系统已经设置了默认地区_语言.字符集为en_US.UTF-8,但是在系统中没有定义对应的locale文件,
所以只需要手动生成这个locale文件即可!

 

 

解决办法:

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)

解决办法
[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库再重建一下,前提是你的文件系统中要有相应的数据文件。

[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系统不一样):

[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

 

转自:https://www.cnblogs.com/kevingrace/p/8191929.html

 

标签:en,UTF,LC,setlocale,locale,warning,zh,root
来源: https://www.cnblogs.com/zl1991/p/15184885.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有