Devin.KR
로그인

리눅스 less 명령어 사용법 - 로그 파일 탐색과 검색 단축키 정리

개발자 조회 1

이 명령어를 언제 쓰는가

장애가 났을 때 열어야 하는 로그는 보통 수백 MB다. cat 으로 열면 터미널이 멈추고, vim 으로 열면 파일 전체를 메모리에 올리느라 한참 걸린다. less 는 필요한 부분만 읽어 보여주기 때문에 파일 크기와 상관없이 즉시 열린다.

단순한 페이지 넘김 도구가 아니다. 안에서 검색하고, 검색 결과 사이를 오가고, 파일이 커지는 것을 실시간으로 따라갈 수도 있다. 실무에서는 로그 조회의 기본 도구로 쓴다.

기본 형식

less [옵션] 파일

파이프로도 받는다. journalctl -u nginx | less 처럼 다른 명령의 출력을 넘겨 읽는 경우가 많다. 종료는 q 다.

자주 쓰는 옵션

옵션의미예시
-N행 번호를 표시한다less -N app.log
-S긴 줄을 접지 않고 잘라서 보여준다. 좌우 스크롤로 확인less -S access.log
-i검색어가 전부 소문자일 때만 대소문자를 무시한다. 대문자가 하나라도 섞이면 구분해서 찾는다. 항상 무시하려면 -Iless -i error.log
-RANSI 색상 코드를 색으로 렌더링한다grep --color=always ERR a.log | less -R
+Ftail -f 처럼 파일 끝을 실시간으로 따라간다less +F /var/log/syslog
+G열자마자 파일 맨 끝으로 이동한다less +G app.log

화면 안에서 쓰는 키

동작
/문자열아래 방향으로 검색
?문자열위 방향으로 검색
n / N다음 검색 결과 / 이전 검색 결과
g / G파일 맨 앞 / 맨 끝으로 이동
Space / b한 화면 아래 / 한 화면 위
&문자열해당 문자열이 있는 줄만 걸러서 보여준다
q종료

실전 예제

1) 에러 로그를 열어 특정 요청 ID를 추적한다. 장애 티켓에 적힌 ID 하나로 관련 줄을 훑는 가장 흔한 작업이다.

less /var/log/app/error.log

열린 뒤 /req-8f2a1c 를 입력하고 엔터, n 으로 다음 결과로 넘어간다.

2) 배포 중인 서비스 로그를 실시간으로 본다. tail -f 와 달리 흐르는 도중에도 위로 올라가 확인할 수 있다.

less +F /var/log/app/app.log

따라가는 중에 Ctrl-C 를 누르면 추적이 멈추고 자유롭게 스크롤할 수 있다. 다시 Shift-F 를 누르면 추적을 재개한다. 종료는 추적을 멈춘 뒤 q 다.

3) 필드가 긴 접근 로그를 줄 바꿈 없이 본다. User-Agent 때문에 한 줄이 화면 세 줄을 잡아먹을 때 쓴다.

less -S /var/log/nginx/access.log

좌우 방향키로 가로 스크롤한다.

4) 다른 명령의 출력을 받아 넘겨 본다. 결과가 화면을 넘어가는 명령은 대부분 이렇게 쓴다.

ps aux | less
journalctl -u nginx --since "2 hours ago" | less

5) 원하는 문자열이 있는 줄만 남긴다. grep 을 다시 치지 않고 화면 안에서 필터링한다.

less app.log

열린 뒤 &WARN 을 입력하면 WARN 이 들어간 줄만 남는다. & 만 입력하고 엔터를 치면 필터가 해제된다.

함정과 주의점

+F 로 추적 중일 때 Ctrl-C 는 less 를 끝내지 않는다. 추적만 멈출 뿐이다. tail -f 를 쓰던 습관으로 Ctrl-C 를 연타하다가 "왜 안 끝나지" 하는 경우가 많다. 추적을 멈춘 다음 q 를 눌러야 나간다.

파이프로 받은 내용은 앞으로 되감을 수 있지만 원본 명령은 계속 돌아간다. journalctl -f | less 처럼 끝나지 않는 명령을 넘기면 less 를 종료해도 앞 명령이 SIGPIPE 를 받을 때까지 잠깐 남는다. 실시간 추적은 파이프 대신 journalctl -u 서비스 -f 를 직접 쓰는 편이 낫다.

색이 이상한 제어 문자로 보이면 -R 을 빠뜨린 것이다. grep --color=alwaysls --color 의 출력을 그냥 less 로 넘기면 ESC[01;31m 같은 문자열이 그대로 나온다. less -R 로 받는다.

root 로 로그를 볼 때 less 안에서 셸을 띄울 수 있다는 점을 기억한다. less 안에서 !명령 을 입력하면 셸이 실행된다. sudo 로 특정 명령만 허용해 준 계정에 sudo less 를 열어 주면 사실상 root 셸을 내주는 것과 같다. 권한 설계 시 주의한다.

함께 보면 좋은 명령어

  • tail — 로그 끝 몇 줄만 빠르게 확인하거나 스크립트에서 실시간 추적할 때 더 간단하다.
  • grep — 볼 범위를 먼저 줄인 다음 less 로 넘기면 훨씬 빠르다.
  • zless — 압축된 .gz 로그를 풀지 않고 그대로 열어 본다.