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


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.logsyslog)은 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

해당 패키지를 설치 한 후, 리셋 syslogkern.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.