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

摘要:
如果出现:-bash:warning:setlocale:LC_ALL:cannotchangelocale解决办法[root@localhost~]#vim/etc/sysconfig/i18nLANG="zh_CN.UTF-8"LC_ALL="zh_CN.UTF-8"SYSFONT="latarcyrheb-sun16"第一行解决了中文乱码问题第二行解决了"LC_ALL:cannotchangelocale"的问题。[root@localhost~]#source/etc/sysconfig/i18n接着安装:[root@localhost~]#yuminstallglibc-commonkde-l10n-Chinese安装之后,重启服务器,上述问题消失。=======================================================================也有可能是系统中的glibc和locale的库版本不兼容。

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

-bash: warning: setlocale: LC_CTYPE: cannot change locale (en_US.UTF-8): No such fileor directory
-bash: warning: setlocale: LC_COLLATE: cannot change locale (en_US.UTF-8): No such fileor directory
-bash: warning: setlocale: LC_MESSAGES: cannot change locale (en_US.UTF-8): No such fileor directory
-bash: warning: setlocale: LC_NUMERIC: cannot change locale (en_US.UTF-8): No such fileor 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 fileor directory
locale: Cannot set LC_MESSAGES to default locale: No such fileor directory
locale: Cannot set LC_ALL to default locale: No such fileor 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

免责声明:文章转载自《SSH 登陆服务器locale告警(-bash: warning: setlocale:)的处理方法(转)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇解决confluence的乱码问题支付宝接口下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

win-sudo插件解决Git bash 执行脚本报错问题 bash: sudo: command not found

Windows git bash 默认没有sudo命令,可以添加win-sudo插件实现该功能 curl -s https://raw.githubusercontent.com/imachug/win-sudo/master/install.sh | sh 如果上面的命令没有用,可以复制https://raw.githubusercontent.com/...

二、Shell变量

什么是变量 变量是暂时存储数据的地方,所存储的数据存在于内存空间中,通过调用内存空间中变量的名字取出与变量对应的数据。 通俗一点就是变量是shell传递数据的一种方法,可以理解为存储数据的容器。 变量设置规则 1、 变量名是可以由数字、字母(大小写)和下划线_组成。区分大小写;但不能以数字开头。 2、 等号为变量赋值,等号两边不能有空格 3、 变量存储的数...

Visual Studio 2008 、 Windows 环境变量介绍 和 如何在文件中引用环境变量 .

Visual Studio 2008 和 Windows 环境变量对设置 相对路径很重要,这样便于代码的移植,即使换一台计算机,代码不用更改配置,直接就能用。 可以在项目的“工具”“属性页”对话框中任何接受字符串的位置使用这些宏。这些宏不区分大小写。 关于如何自己定义环境变量详见我的另一文章:http://blog.csdn.net/jtop0/artic...

shell脚本系列:两种风格的for循环

C语言风格 格式 for((exp1; exp2; exp3)) do statements done 示例 #!/bin/bash sum=0 for ((i=1; i<=100; i++)) do ((sum += i)) done echo "The sum is: $sum" 修改“从 1 加到 100 的和”的代码...

yum 程序包管理简介

rpm可以实现程序的快速,简单安装(跟编译安装比),但是rpm自己不能解决依赖,所以很多工具为了自动解决依赖应运而生,其中yum就是其中之一。 yum解决依赖的办法: 必须有个文件服务器,里面放置所以的rpm包,以及包的相关元数据(-qi,-qR得到的数据)。元数据可以使用createrepo来创建。并放置在repodata目录下。 这个文件服务器可以...

shell脚本编程基础之while、for、until循环

while及until循环结构 while CONDITION;do statement done 进入循环:条件满足 退出循环:条件不满足 当需要命令的执行状态返回值时,可以直接把整个命令当做循环的条件 until CONDITION;do statement ... done 进入循环:条件不满足 退出循环:条件不满足 退出循环的...