목차
주요 시사점
- Linux 시스템 로그는 상당한 양의 디스크 공간을 차지할 수 있습니다.
- 시스템은 일반적으로 디스크 공간을 절약하기 위해 오래된 로그 파일을 압축합니다.
- Journalctl 또는 tail -f 명령을 사용하여 로그를 보고 문제가 있는 프로세스를 식별할 수 있습니다.
Linux 시스템은 날씬하다는 평판을 받고 있지만 갑자기 디스크 공간이 부족해지는 것을 발견할 수도 있습니다. 왜 이런 일이 일어났나요? 가장 큰 단서이자 가장 큰 범인은 Linux 시스템 로그에서 찾을 수 있습니다.
로그가 그렇게 많은 디스크 공간을 차지하는 이유는 무엇입니까?
로그는 Linux 시스템 관리의 중요한 부분입니다. 컴퓨터에 무슨 일이 일어나고 있는지 확인할 수 있고 발생하는 문제를 해결할 수도 있습니다. Linux 로깅 데몬은 Windows의 이벤트 뷰어와 유사합니다. 로그는 일반적으로 많은 공간을 차지하지 않습니다. 이는 대부분의 배포판이 디스크에서 차지하는 공간을 자동으로 관리하기 때문입니다.
Linux 로그는 역사적으로 일반 텍스트 파일이었지만 많은 주요 배포판이 systemd로 이동함에 따라 systemd 서비스인 Journald에서 관리하는 바이너리 파일이 되었습니다. 또는 배포판에서 rsyslog 또는 syslog-ng를 사용합니다.
오래된 로그는 관련성이 없으며 대용량 아카이브는 공간을 차지할 수 있으므로 시스템은 실제로 원하는 항목을 위한 디스크 공간을 절약하기 위해 일반적으로 로그를 “회전”(보관, 압축 및 삭제)합니다.
로그가 많은 공간을 차지할 것이라고 생각하지 않을 수도 있지만 오작동하는 프로세스로 인해 시스템이 로그를 회전하는 것보다 더 빠르게 로그가 채워질 수 있습니다.
디스크 공간을 확인했는데 갑자기 부족해지고 최근에 대용량 파일을 다운로드하지 않은 경우 Linux 시스템 로그에 문제가 있을 수 있습니다. 시스템 로그를 채우고 있는 내용을 찾아서 수정해야 합니다.
du -h 명령을 사용하여 사용 중인 디스크 공간을 확인할 수 있습니다.
du -h /var/log
각 하위 디렉터리의 목록과 해당 디렉터리가 차지하는 총 공간이 표시됩니다.
로그 찾기
systemd와 함께 최신 Linux 배포판을 사용하는 경우 Journalctl 프로그램을 사용하여 로그를 봅니다. Journald는 일반적으로 배포판에 따라 /var/log/journal 또는 /run/log/journal 디렉터리에 로그를 저장합니다.
로그를 보려면 쉘 프롬프트에서 Journald 명령을 입력하십시오. 다른 유용한 명령줄 옵션이 있습니다. 부팅 메시지를 보려면 -b 옵션을 사용하십시오.
journalctl -b
-f 옵션을 사용하면 시스템의 로그 메시지를 실시간으로 볼 수 있습니다.
배포판이 systemd를 사용하지 않는 경우 /var/log 디렉터리에서 로그를 찾을 수 있습니다. systemd를 사용하더라도 일부 프로그램은 여전히 이 디렉터리에 로그를 저장합니다. 이는 less와 같은 호출기와 같은 유틸리티를 사용하여 검사할 수 있는 일반 텍스트 파일입니다.
예를 들어, 시스템 로그를 읽으려면 다음을 수행하십시오.
less /var/log/syslog
수천 줄이 포함될 수 있는 로그 파일의 전체 내용을 볼 수 있습니다.
tail 명령의 -f 옵션을 사용하여 실시간으로 모니터링할 수도 있습니다.
tail -f /var/log/syslog
Linux가 로그 파일을 회전하는 방법
/var/log 디렉터리에서 이름이 “log.N.gz”로 끝나는 파일을 볼 수 있습니다. 여기서 N은 숫자입니다. 이는 시스템이 이전 로그를 순환한 결과입니다. 대부분의 배포판에는 이 작업을 자동으로 수행하는 “logrotate”라는 유틸리티가 있습니다. logrotate는 일반적으로 cron 작업 또는 시스템 타이머로 실행되도록 설정됩니다.
기본적으로 대부분의 배포판은 매일 logrotate를 실행합니다. logrotate는 “.gz” 파일 확장자에서 알 수 있듯이 gzip을 사용하여 오래된 로그를 압축합니다. 이를 수행하기 위해 기간이나 파일 크기와 같은 임계값을 사용하고, 최종적으로 오래된 로그 파일을 삭제하기 위해 또 다른 임계값을 사용합니다.
logrotate의 기본 옵션은 대부분의 데스크탑 사용자에게 충분합니다. 수퍼유저로 /etc/logrotate.conf 파일을 편집하고 시스템의 cron 또는 systemd 타이머 파일을 편집하여 logrorate의 동작을 조정할 수 있지만 이러한 작업은 실제로 서버 관리자에게만 관련됩니다.
디스크 공간을 절약하기 위해 구성 파일을 조정하는 것보다 로그를 채우는 내용을 수정하는 것이 더 좋습니다. 반드시 구성을 변경해야 하는 경우 다음 내용을 읽어보세요. logrotate 매뉴얼 페이지.
어떤 로그를 삭제해도 안전합니까?
다른 모든 방법이 실패하고 디스크 공간을 확보해야 하는 경우 logrotate가 삭제되기 전에 “.gz”로 끝나는 보관된 로그 파일을 수동으로 삭제할 수 있습니다. rm을 사용할 수 있지만 다음 파일은 시스템에 속하므로 수퍼유저로 실행해야 합니다.
sudo rm /var/syslog/syslog.*gz
이 명령은 “syslog”가 포함된 모든 파일을 삭제합니다. “gz”로 끝납니다.
sudo를 통해 명령, 특히 rm과 같은 파괴적인 명령을 실행할 때는 항상 주의하세요!
일반적으로 의미를 완전히 이해하지 않고 시스템 디렉터리의 파일을 삭제하면 안 되지만, 보관된 로그는 파일이 없어도 문제를 일으키지 않습니다. 하지만 문제가 있는 경우 이전 로그를 참조해야 할 수도 있습니다.
로그를 채우는 문제를 해결하는 방법
로그를 채우는 것이 무엇인지 알아내는 가장 좋은 방법은 Journalctl 또는 tail -f 옵션을 사용하여 로그를 추적하는 것입니다. 가장 좋은 방법은 오류 메시지를 반복하는 것입니다.
디스크 공간을 절약하려면 문제가 되는 프로세스를 처리해야 합니다. 오류의 원인을 모르는 경우 웹을 검색하거나 배포판 지원 채널에 도움을 요청할 수 있습니다. 마침내 문제를 해결한 후에는 이전 로그를 안전하게 삭제할 수 있습니다. 이제 훨씬 더 많은 디스크 공간이 생겼을 것입니다.