SharedIT | 묻고 답하기(AMP)

CENTOS 7 tail 명령어 한글 깨짐 현상

리눅스 서버에서 로그파일를 실시간으로 확인하려고 하는데

cat이나 tail 명령어로 로그를 출력하면 한글이 깨져서 출력됩니다...

근데 이상한게 vi로 열어서 보면은 또 안깨지고 잘 나오는데..

이거 왜 이렇게 출력이 되나요..?

현재 서버는  ko_KR.UTF-8 이걸로 설정이 되어있는데

특정 사용자 계정은 ko_KR.euckr 이걸로 .bash_profile에 설정이 되어있습니다.

서비스 특성상 ko_KR.euckr 이걸 사용해야되서...

** 사용자 .bash_profile 설정 상태

export LANG=ko_KR.euckr

export LC_ALL=ko_KR.UTF-8


가장 이해가 안되는 부분이 vi로 보면 잘 나오는데, cat이나 tail로 보면 깨져서 출력되는 부분..


이거 어떤 설정을 해야 해결이 될까요..?




Tags : 태그가 없습니다.

7개의 답변이 있습니다.

Genghis Khan
  0 추천 | 2년 이상 전

아래 링크 참고하세요

언어팩에 대한 상세 정보입니다

https://fmyson.tistory.com/m/359

wansoo
  0 추천 | 2년 이상 전

리눅스 시스템에 의해 표시되는 로그 메시지가 영어로 나와도 상관이 없다면...

export LANG=C

와 같이 명령을 줘서 사용하는 것도 괜찮은 방법입니다.

시스템에서 표시하는 한글 언어 코드와 단말기(Putty 등 터미널 애뮬레이터 또는 터미널 하드웨어)에서 처리하는 한글 언어 코드 페이지가 맞지 않아 글자가 깨어지는 현상이기 때문에...

한글이 깨어지지 않게 하려면 시스템에서 표시하는 한글 언어 코드와 단말기에서 표시할 수 있게 설정된 한글 언어 코드를 맞춰 주거나...

그냥, 시스템에서 한글이 아닌 영어로 메시지를 표시하도록 해서 사용해 버리는 간단한 방법도 있겠고요.


vi에서 제대로 표시된다는 건 vi로 열고 있는 문서에 포함된 한글 문서와 단말기에서 처리하는 한글 코드 페이지가 맞기 때문에 제대로 볼 수 있는 거라 할 수 있을 것 같고요.


한글, 영어가 중요하지 않고, 정상적인 메시지가 표시되기를 원한다면 

export LANG=C

명령을 사용해서 표시되는 언어 코드 페이지를 변경해서 영어가 표시되도록 해 주면 되겠고요.


한글이 표시되어야 하고, 글자가 깨어지지 않게 보고 싶다면

export LANG=ko_KR.utf8

명령을 실행해 보고, 그래도 동일하게 깨어 진다면

export LANG=ko_KR.euckr

명령을 실행시켜서 사용하면 되겠고요.


접속하는 클라이언트 단말기 설정을 변경해서 시스템 언어 설정을 맞춰주는 것도 방법이 될 수 있지만 리눅스 환경 변수 값을 변경해서 맞춰주는게 간단하고 편하겠고요.

차바라기
  0 추천 | 2년 이상 전

아래 사이트도 참고해보세요

https://superdev.tistory.com/25


wansoo
  0 추천 | 2년 이상 전

질문글에도 그렇고...

답글에도 그렇고...

리눅스 UTF-8 문자셋을 ko_KR.UTF-8 이라고 모두 표기하고 계신데...

리눅스 셀에서 UTF-8에 대한 코드값이 ko_KR.utf8이 맞지 싶은데요??


지금 사용하고 계신 리눅스에서 

locale -a | grep ko

라는 명령을 한 번 입력해 보시고 답변 좀 주시면 참고하는데 도움될 것 같습니다.

제가 가진 CentOS 6.9, CentOS8-stream, Debian, Ubuntu 모두

ko_KR.utf8 로 나오는데...


대소문자를 구분하는 리눅스에서...

ko_KR.utf8과 ko_KR.UTF-8 은 차이가 있지 싶은데...

왜 모두들 ko_KR.UTF-8 이라고 적고 있는지... 시스템에 차이가 있지는 않지 싶은데...

참... 궁금하네요~


참고로 ko_KR.euckr 는 윈도우에서 기본으로 사용하는 코드 페이지 949 한글 코드에 해당합니다.

리눅스에서는 기본적으로 UTF-8인 ko_KR.utf8을 사용하고...

윈도우에서 사용하는 한글의 문자셋과 호환되게하기 위해 추가 한글 언어팩을 설치해서 ko_KR.euckr이나, korean.euc 등을 사용할 수 있겠고요.


이외에도 korean, ko_KR 등의 추가 패키지를 설치해서 사용할 수 있지만...

언어 팩을 설치할 때 사용하는 패키지의 차이 일 수는 있겠지만...

ko_KR.UTF-8 이 설치되지는 않을 것 같은데... 이상하네요~


ko_KR.UTF-8과 ko_KR.utf8 관련해서 추가적인 내용을 알고 계신분들도 의견 달아 주시면 Linux 사용에 있어서 참고가 될 수 있을 것 같습니다.

wansoo | 2년 이상 전

ko_KR.UTF-8도 ko_KR.utf8과 동일하게 작동되긴 하네요.

아마 내부적으로 전환해 주는 처리를 하고 있는 것 같네요.

UTF-8, UTF8, utf-8, utf8 등이 혼용되어 사용되고 있는 것 같네요.

사용하는 개발언어, 사용 서비스 환경 등에 따라 UTF-8을 사용해야 하는 경우도 있고, UTF-8을 사용하면 안되는 경우도 있고, 둘 모두 사용해도 무방한 경우도 있고...

사용 환경에 따라서 한가지를 사용해서 안된다면 바꿔 Test 해 보는 여유를 가지고 있어야 할 것 같아 보이네요.

topkslee
  0 추천 | 2년 이상 전

현재 언어설정 상태를 확인해보시구요.

# locale 또는 # echo $LANG

아마도 ko_KR.UTF-8 나 ko_KR.euckr 둘중에 하나 일것 같은데요.


말씀하신 것처럼 서버는 ko_KR.UTF-8이고 계정은 ko_KR.euckr로 되어 있다고 하셨는데요.

한글이 깨져 나온다면 서버 언어설정 ko_KR.UTF-8일 필요가 없으면 ko_KR.euckr로 변경하셔서 한번 해보세요.

한글 깨질때 ko_KR.UTF-8 -> ko_KR.euckr로 변경하면 되더군요.

바꾸는 것은  /etc/locale.conf 파일 바꾸셔도 되구요.

명령어로 localectl set-locale LANG=ko_KR.euckr 바꾸셔 됩니다.

Simon.Park
  0 추천 | 2년 이상 전

아래 글 참고 해 보세요!~~

profile 파일에서의 설정은 시스템 전체의 설정이 아니라고 하네요~~


https://interwater.tistory.com/entry/linux-tomcat-log-%ED%95%9C%EA%B8%80-%EA%B9%A8%EC%A7%90%ED%98%84%EC%83%81

wansoo
  0 추천 | 2년 이상 전

export LANG=ko_KR.utf8


명령을 실행해 주고 cat 명령이나 tail 명령을 수행해 보세요.



vi, vim은 문자셋 설정을 별도로 해서 사용됩니다.


:set encoding

vi에서 명령으로 인코딩 설정을 한번 확인해 보세요.


:e ++enc=utf-8 

과 같은 형식으로 vi 창에서 설정 변경을 할 수 있겠고...


환경설정에서 지정해서 기본 지정되게 하고 싶다면 환경 설정 file에 지정해 주면 되겠고요.


vim을 사용하고 있다면

/etc/vimrc  

{사용자 홈디렉터리의} .vimrc


vi를 사용하고 있다면

/etc/virc

{사용자 홈디렉터리의" .virc



환경 설정 file에 

set fileencodings=


문자셋 설정이 되어 있기 때문에 cat, tail과 다른 문자셋 설저이 적용되기 때문에 vi에서는 문제없이 잘 처리되는게 이상할건 아닌것 같네요.



tail이나 cat 명령을 alias로 export LANG=ko_KR.utf8 을 먼저 실행시킨 후에 해당 명령을 실행시키게 변경해 두고 사용하는 것도 방법이 될 수 있지 않을까 하는 생각도 들고요.


사용자 별 계정의 profile 설정에서 적절한 문자셋이 설정되도록 지정해 두고 사용해도 될 것 같아 보이네요.ㅐ

wansoo | 2년 이상 전

참고로 요즘 Linux에서 대부분 vi가 아닌 vim을 사용하고 있답니다.

vim을 사용하는데, alias를 지정해 두었기 때문에 vi 명령을 실행시키면 vim이 실행되는 형태로 설정되어 있겠고요.

vi나 vim이나 기본적인 사용법에 있어서 차이가 없다보니...

특별히 따질 필요없이 사용하면 되긴 하겠지만...

설정을 변경 한다거나 할때는 제대로 알고 접근해야 혼동을 피할 수 있다보니...

참고로 알아 두는게 도움이 될 것 같고요.