linux系统137服务报警,教你如何处理ssh登陆服务器locale告警

使用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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值