서론
이전에 live server의 disk used 이슈가 발생해 해결했던 경험 정리
사용량 확인
df #디스크 사용량 확인
df -m #메가 단위로 확인
df -h #깔끔하게 보기 (메가는 메가 기가는 기가로 표시 해줌)
du -h #현재 디렉토리에서 모든 하위 디렉토리 및 파일 용량 확인
du -sh * #현재 디렉토리에 있는 얘들만 용량 확인
먼저 어디서 disk를 많이 쓰고 있는지 확인하자
여기서 주로 df -h로 디스크를 얼만큼 사용중인지 확인
(-h는 human-readable 옵션으로 사람이 읽기 좋게 G, M 등으로 표시)
그냥 root 디렉토리에서 du -h를 쓰면 os내 모든 디렉토리 및 파일 목록이 다 나와 보기가 매우 힘들다
du -sh *를 이용해 한 단계 디렉토리만 확인하여 단계별로 추적해가자.
찾아낸 서버의 문제는 매일 서버 log를 저장 하는데 몇 년간 로그가 쌓이면서 이슈가 발생한 것
로그 제거
sudo find -name '*.out.*' -mtime +180 |xargs sudo rm
sudo find -name '*log.*' -mtime +180 |xargs sudo rm
find -mtime 옵션은 수정된 날짜에 따라 찾기
+180은 수정된 지 180일 이후의 것들을 찾아오고
-180은 180일 이내의 것들을 찾아온다.
ctime = change time
mtime = modify time
atime = access time
현재 서버에서 6개월 이후의 로그는 필요 없기에 6개월을 기준으로 찾아온다.
이후 찾은 로그들을 xargs를 이용해 찾아온 내용을 제거 해준다.
자동화
매번 로그가 쌓일 때마다 위 과정을 반복할 필요 없도록 자동화 시켜주자.
리눅스에서는 쉽게 주기적 실행을 할 수 있는 Crontab이 있다.
위의 로그 제거 명령어를 쉘 스크립트로 만들어 두고 주기적으로 실행 하도록 crontab에 넣어주면 된다.
crontab -e
#텍스트 에디터 실행
0 0 1 * * /directory/delete_log.sh #매달 1일 0시 0분 실행
'개발 이모저모 > 이모저모' 카테고리의 다른 글
오픈소스 Contribution 해보기! (2) | 2023.04.28 |
---|---|
AWS RDS MSSQL에는 sysadmin 권한을 가질 수 없다. (0) | 2022.06.03 |
Slack API를 통해 하이퍼링크 메세지 보내기 (0) | 2022.03.07 |
[Discord bot] java 디스코드 봇 만들기 (6) | 2021.11.17 |
2021년 Top 5 개발 트렌드 (1) | 2021.10.06 |