locale (UTF-8): 没有那个文件或目录

SSH登陆linux服务器,显示
warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): 没有那个文件或目录

警告: setlocale: LC_CTYPE: 无法改变区域选项 (UTF-8)(warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): No such file or directory)。
在这里插入图片描述

setlocale: LC_ALL: cannot change locale (zh_CN.UTF-8) ,

[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

原因分析:

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

解决办法

注意:这种方法针对的是Centos7不适用Centos6

# 查看系统当前语言
echo $LANG

# 查看locale库是否存在
ll /usr/lib/locale/locale-archive

在这里插入图片描述

# 删除locale库再重建一下,前提是你的文件系统中要有相应的数据文件。
rm -f /usr/lib/locale/locale-archive

# 重新生成中文的locate文件
## 配置哪个语言就生成哪个语言文件
localedef -c -f UTF-8 -i zh_CN zh_CN.utf8

Linux系统locale(UTF-8)报错-小白菜博客
https://stackoverflow.com/questions/58304278/how-to-fix-character-map-file-utf-8-not-found
Linux系统locale(UTF-8)报错

# 安装语言包(非必需)
## 安装中文命令行支持--找不到包
yum install -y glibc-minimal-langpack glibc-locale-source
yum install -y glibc-langpack-zh

# 安装gui中文支持
yum install -y langpacks-zh_CN

# 安装英文语言包
dnf install -y glibc-minimal-langpack glibc-locale-source glibc-langpack-en

# 重新安装glibc-common包(解决glibc不兼容的问题)
yum -y reinstall glibc-common

永久修改locale的LANG

注意: LANG=zh_CN.UTF8(没有-)

# 一定要需要修改locale.conf中的LC_ALL
vim /etc/locale.conf

#添加内容
LC_ALL=zh_CN.UTF-8

# vim保存退出
:wq

# 使用localectl永久修改locale的LANG
## 相当于在/etc/locale.conf中添加LANG=zh_CN.UTF8
localectl set-locale LANG=zh_CN.UTF8


# 使配置生效
source /etc/locale.conf

在这里插入图片描述

结果验证

重新登陆ssh后告警消除
Linux系统locale(UTF-8)报错

Centos6服务器locale告警(-bash: warning: setlocale:)的处理方法

ssh登陆Centos6服务器locale告警(-bash: warning: setlocale:):

-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

解决办法

以下方法仅适用于Centos6.

# 安装依赖的语言包
yum install -y glibc-common kde-l10n-Chinese

#编辑/etc/sysconfig/i18n
[root@centos6-vm01 ~]# vim /etc/sysconfig/i18n

#添加以下内容
LANG="en_US.UTF-8"
LC_ALL="en_US.UTF-8"
SYSFONT="latarcyrheb-sun16"
SYSFONT="latarcyrheb-sun16"
#第一行解决了乱码问题
#第二行解决了"LC_ALL: cannot change locale (en_US.UTF-8)"的问题。

# 查看是否添加语言成功
cat /etc/sysconfig/i18n

# 使配置生效
source /etc/sysconfig/i18n

# 删除locale库再重建一下,前提是你的文件系统中要有相应的数据文件。
rm -f /usr/lib/locale/locale-archive

# 生成 en_US.UTF-8这个字符集的locale文件
## 配置的哪个语言就生成哪个语言文件
localedef -v -c -i en_US -f UTF-8 en_US.UTF-8