매우 큰 로그 파일, 어떻게해야합니까?


36

( 이 질문 은 비슷한 문제를 다루지 만 회전 된 로그 파일에 대해 이야기합니다.)

오늘 나는 매우 낮은 /var공간 에 관한 시스템 메시지를 받았습니다 .

평소와 같이 나는 라인의 명령을 실행 sudo apt-get clean하여 시나리오를 약간 개선했습니다. 그런 다음 회전 로그 파일을 삭제하여 다시 거의 개선되지 않았습니다.

조사 결과 나는 로그 파일 중 일부 /var/log가 매우 큰 것으로 자랐 음을 발견했습니다 . 구체적으로 말하면 ls -lSh /var/log,

total 28G
-rw-r----- 1 syslog            adm      14G Aug 23 21:56 kern.log
-rw-r----- 1 syslog            adm      14G Aug 23 21:56 syslog
-rw-rw-r-- 1 root              utmp    390K Aug 23 21:47 wtmp
-rw-r--r-- 1 root              root    287K Aug 23 21:42 dpkg.log
-rw-rw-r-- 1 root              utmp    287K Aug 23 20:43 lastlog

보시다시피, 처음 두 가지는 문제가되는 것들입니다. 왜 이렇게 큰 파일이 회전되지 않았는지 약간 놀랐습니다.

그래서 내가 무엇을해야하니? 이러한 파일을 삭제 한 다음 재부팅 하시겠습니까? 아니면 좀 더 신중한 조치를 취 하시겠습니까?

우분투 14.04를 사용하고 있습니다.

업데이트 1

우선, 시스템은 몇 개월 전입니다. 하드 디스크 충돌 후 몇 달 전에 처음부터 시스템을 설치해야했습니다.

이제이 답변 에서 조언 했듯이 먼저을 사용하여 문제가되는 로그 파일을 확인 tail했습니다. 그런 다음 심층 검사를 위해 동일한 답변 에서이 스크립트를 실행했습니다 .

for log in /var/log/{syslog,kern.log}; do 
  echo "${log} :"
  sed -e 's/\[[^]]\+\]//' -e 's/.*[0-9]\{2\}:[0-9]\{2\}:[0-9]\{2\}//' ${log} \
  | sort | uniq -c | sort -hr | head -10
done

이 과정에는 몇 시간이 걸렸습니다. 결과물은

/var/log/syslog :
71209229  Rafid-Hamiz-Dell kernel:  sda3: rw=1, want=7638104968240336200, limit=1681522688
53929977  Rafid-Hamiz-Dell kernel:  attempt to access beyond end of device
17280298  Rafid-Hamiz-Dell kernel:  attempt to access beyond end of device
   1639  Rafid-Hamiz-Dell kernel:  EXT4-fs warning (device sda3): ext4_end_bio:317: I/O error -5 writing to inode 6819258 (offset 0 size 4096 starting block 54763121030042024)
       <snipped>

/var/log/kern.log.1 :
71210257  Rafid-Hamiz-Dell kernel:  attempt to access beyond end of device
71209212  Rafid-Hamiz-Dell kernel:  sda3: rw=1, want=7638104968240336200, limit=1681522688
   1639  Rafid-Hamiz-Dell kernel:  EXT4-fs warning (device sda3): ext4_end_bio:317: I/O error -5 writing to inode 6819258 (offset 0 size 4096 starting block 954763121030042024)

( /dev/sda3내 홈 디렉토리입니다. 찾을 수 있듯이

lsblk /dev/sda
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 931.5G  0 disk 
├─sda1   8:1    0 122.1G  0 part /
├─sda2   8:2    0   7.6G  0 part [SWAP]
└─sda3   8:3    0 801.8G  0 part /home

프로세스가 한계를 뛰어 넘고 싶어하는 이유는 실제로 내 이해 범위를 벗어납니다. 시스템 업데이트 후에도 계속 진행된다면이 포럼에서 다른 질문을하고 싶을 것입니다.)

그런 다음 이 답변 ( 더 깊은 이해 를 위해 이것을 확인하고 싶을 수도 있음 )에서 나는

sudo su -
> kern.log
> syslog

이제이 파일의 크기는 0입니다. 재부팅 전후에 시스템이 정상적으로 실행되고 있습니다.

앞으로 며칠 안에이 파일들을 (다른 사람들과 함께)보고
, 라인 밖에서 작동하는지 다시보고 할 것입니다.

마지막으로, 문제가되는 파일 ( kern.log및 syslog)은 grep내부 의 파일 검사 ( 도움말) 에 따라 회전되도록 설정되어 있습니다 /etc/logrotate.d/.

업데이트 2

로그 파일은 실제로 회전됩니다. 하루 만에 큰 사이즈가 된 것 같습니다.


2
로그 파일에 왜 그렇게 큰지에 대한 단서를 빌려주는 것이 있습니까? 삭제 및 재부팅 한 다음 모니터를 통해 기하 급수적으로 증가하는지 모니터링하십시오.
— douggro

@douggro 실제로 있습니다. 질문에 대한 내 업데이트를 참조하십시오.
— Masroor

답변:


43

이러한 파일을 삭제 한 다음 재부팅 하시겠습니까?

아니요 . 명령을 rm입력하여 touch다시 작성하는 동안 무언가가 충돌 할 수 있으므로 비우십시오. 사용하지 마십시오 .

가장 짧은 방법 :

cd /var/log
sudo su
> lastlog
> wtmp
> dpkg.log 
> kern.log
> syslog
exit

루트가 아니면 필요합니다 sudo. AU의 다른 답변 에서 발췌.

당신이 그렇게하기 전에. 를 수행 tail {logfile}하고 그렇게 큰 일 할 수있는 이유가 있는지 확인합니다. 이 시스템이 몇 년이 지난 경우를 제외하고는 이에 대한 이유가 없어야하며 문제를 해결하는 것이 이것을 계속하는 것보다 낫습니다.

kern.log와 syslog는 일반적으로 크지 않아야합니다. 그러나 내가 말했듯이 :이 시스템이 몇 년 동안 작동되어 실행되면 정상적인 것일 수 있으며 파일을 지우면됩니다.

그리고 그것이 미래에 그렇게 커지는 것을 방지하기 위해 : setup logrotate. 그것은 매우 간단하며 설정 한 크기보다 커지면 로그 파일을 압축합니다.


1 다른 것 : 내용을 삭제하지 않으려면 파일을 tarring 또는 gzipping하여 파일을 압축 할 수 있습니다. 이제 파일의 10 %가 파일로 끝날 것입니다. 디스크에 여전히 여유 공간이있는 경우입니다.


3
wtmp: Command not found이것은 어떤 패키지입니까?
— 야누스 트롤

/ var / log / wtmp는 명령이 아니라 로그 파일입니다. 내 대답은 wtmp를 어디에서 실행할 수 있습니까? ;-)
— Rinzwind

3
나는 생각했다 >신속하고 노력했다 "LASTLOG"이고 내가 제대로 이해한다고 가정 그래서, 일 : P
— 야누스 Troelsen

이 문제는 계속 발생합니다. 우분투 16.04를 사용하고 있습니다. 이 과정에 어떤 것이 있는지 말해 줄 수 있습니까? 미리 감사드립니다!
— 가얀

4
이 답변은 lastlog, wtmp, dpkg.log, kern.log 및 syslog로 수행 할 작업을 적절하게 설명하지 않습니다.
— Tor Klingberg

20

less또는 tail명령을 사용하여 시각적으로 검사하여 로그를 채우는 항목을 설정하려고 시도하는 것이 좋습니다.

tail -n 100 /var/log/syslog

또는 문제가되는 라인을 너무 깊게 묻어 발생한 것을 쉽게 볼 수없는 경우

for log in /var/log/{dmesg,syslog,kern.log}; do 
  echo "${log} :"
  sed -e 's/\[[^]]\+\]//' -e 's/.*[0-9]\{2\}:[0-9]\{2\}:[0-9]\{2\}//' ${log} \
  | sort | uniq -c | sort -hr | head -10
done

타임 스탬프를 제거하고 가장 자주 발생하는 메시지를 계산하려고 시도합니다.


10

시스템 로그 파일을 정리하는 방법은 다음과 같습니다. 1 단계와 2 단계는 선택 사항이지만 때로는 이전 로그를 확인해야하며 백업이 유용한 경우가 있습니다. ;-)

  1. 선택 사항 : 로그 파일 복사

    cp -av --backup=numbered file.log file.log.old
    
  2. 선택 사항 : 로그 사본에 Gzip 사용

    gzip file.log.old
    
  3. 클린 파일을 위해 / dev / null 사용

    cat /dev/null > file.log
    

그리고 우리는이 로그 (여러 서버에서만)를 로그 로트하고 매주 실행합니다 .cron 스크립트는 * .1 (또는 다음 회전)을 가진 모든 파일이 gzip으로 압축합니다.


1
이것이 우분투 18.04로가는 길입니다.
— Luís de Sousa

이것이 정답입니다. 로그가 그처럼 빠른 속도로 가득 차면 (물론 로그 로테이트) 본질적으로 잘못되었으며 더 깊이 파고들 가치가 있습니다.
— Sudip Bhandari

4

오늘 우분투 16.04를 설치했는데 같은 문제가 나타났습니다. 그러나 busybox-syslogd 로이 문제를 해결했습니다. 예! 방금 해당 패키지를 설치했으며 문제가 해결되었습니다. :)

$ sudo apt-get install busybox-syslogd

해당 패키지를 설치 한 후, 리셋 syslog및 kern.log:

sudo tee /var/log/syslog /var/log/kern.log </dev/null

이 간단한 솔루션이 다른 사람들에게 유용하기를 바랍니다.


2
이 패키지는 정확히 무엇을하며이 솔루션은 어떻게 작동합니까?
— Aaron Franke

이 파일은 하루에 크게 커질 수 없으므로이 게시물에 대해 의심 스럽습니다. 그래서 나는이 프로그램에 대해 다른 사람들로부터들을 때까지 기다릴 것입니다.
— SDsolar
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.