애플리케이션 로그량이 너무 많아서 일단위+50M 크기로 백업되게 했더니 특정 시간에 발생한 이벤트 로그를 찾아 보기가 만만찮네요. 제가 사용한 방법을 리눅스 명령어 그리 익숙치 않은 분들을 위해 간단히 단계별로 정리해 공유해봅니다.상황은 이렇습니다. 어제 16:20:35 에 발생한 이벤트 로그를 찾아보려 합니다. 로그 파일들을 여러 개로 나뉘어 있고 gzip 으로 압축되어 있는 상황이어서 grep 등으로 한 번에 찾기는 안되고.
그래서 일단 어제 16:20 이후 몇 분 사이 변경된 파일을 찾아봤습니다. 시작을 위한 기본 틀은 이런 식이 되겠죠.
find . -mtime n
1. mtime 은 n * 24 이므로 좀 더 세밀하게 찾으려면 -mmin 으로 분 기준으로 찾도록 합니다. 가령 10분 전 부터 바뀐 것들 찾으려면 find . -mmin -10
2. 위 방법은 from 만 적용된거니 between 식으로 해야겠죠. -mmin -10 은 10분 전 부터 변경된거. -mmin +10 하면 10분 전 이전 변경된거 이렇게 됩니다. 즉, 10분 전 부터 5분 전 사이에 변경된 걸 찾으려면 find . -mmin -10 -mmin +5
3. 위와 같이 하면 파일 목록만 표시되지 시간 정보는 표시되지 않습니다. 그래서 이런 식으로 변경이 필요합니다. find . -mmin -10 -mmin +5 -exec ls -l {} \; find 옵션으로 -exec 을 써서 find 결과에 대해 추가 명령을 할 수 있습니다. 이 방법도 가능하지만 전 끝에 {} \; 이거 쓰는게 불편해서 xargs 를 사용하는 방법을 더 선호합니다. 이런 식으로 find . -mmin -10 -mmin +5 | xagrs ls -l
4. exec 이나 xargs ㅆ기 전에는 잘 나오던 결과가 그거 붙이면 엉뚱하게 나올겁니다. 이유는 find 결과로 "." 즉, 현재 디렉토리가 포함되어 있어서 결국 디렉토리 내 모든 파일을 ls -l 하는 셈이 되어서 그런거죠. 디렉토리를 필터링하면 간단히 해결됩니다. find . -type f -mmin -10 -mmin +5 | xagrs ls -l
5. 어제 16:20 대를 찾는거니 현재 시간 기준으로 분으로 환산해서 찾으니 얼추 후보 파일들 몇 개 나오네요. 그것들 gunzip 으로 압축푼 후 grep 으로 ...
'Slack 채널 정리' 카테고리의 다른 글
LocalDateTime 타입의 값 비교 - ChronoUnit (0) | 2019.12.02 |
---|---|
Json, POJO 매핑 (0) | 2019.12.02 |
Spring Boot 에서 hessian 사용하기 (0) | 2019.12.02 |
bean 담긴 리스트 핸들링 (0) | 2019.11.29 |
Javers (0) | 2019.11.29 |